docker 搭建php环境(踩坑经验!!)

这篇具有很好参考价值的文章主要介绍了docker 搭建php环境(踩坑经验!!)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本次安装的推荐配置:

  • CentOS 7 (迅雷种子 http://ftp.nara.wide.ad.jp/pub/Linux/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.torrent)
  • nginx 1.24.0
  • mysql 5.7.43
  • php 7.4.3-fpm
  • redis 7.2.0  
2023年12月21日:后面发现,一定要加上 docker run的时候一定要加上 --ip 172.18.10.1用来固定ip,不然重启变变,这样容器新增端口后,不用重新run,直接端口调用全部端口。
 
一、虚拟机安装centos7
vm虚拟机需要4g内存,网络使用桥接模式设置静态ip、50G硬盘、1cpu、2核(踩坑经验:太低配置重启后会开不了机)
https://blog.csdn.net/Z1576796635/article/details/128878299
https://blog.csdn.net/CLONS/article/details/130012899

docker 搭建php环境(踩坑经验!!)

 

 
开机后
uname -r 查看版本要在3.10以上
更新系统组件 yum -y update
 
二、安装docker
删除旧docker
yum remove docker docker-common docker-selinux docker-engine
安装工具
yum install -y yum-utils device-mapper-persistent-data Ivm2
配置docker的yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装docker
sudo yum install -y docker-ce
启动docker
systemctl start docker
设置开机启动
systemctl enable docker
 
设置镜像国内加速(踩坑经验:设置多个源头,不然会很慢)
创建文件
sudo mkdir -p /etc/docker
输入源头url
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://docker.mirrors.ustc.edu.cn/",
"https://hub-mirror.c.163.com/",
"https://reg-mirror.qiniu.com/"
]
}
EOF
重启配置
sudo systemctl daemon-reload
重启docker
sudo systemctl restart docker
 
设置容器局域网,容器间相互访问 (心得:容器互相访问,不用通过宿主机,更快)
docker network create my_network
查看局域网是否创建成功
docker network ls

docker 搭建php环境(踩坑经验!!)

 

三、安装php

下载php镜像

docker pull php:7.4.3-fpm (踩坑经验:后面要带fpm)
 
使用镜像生成临时容器 ,名为:test_php7.4.3,用来拷贝配置文件(踩坑经验:空文件夹做共享,会将容器的配置文件清空)
docker run -it --name test_php7.4.3-fpm -d php:7.4.3-fpm 
 
使用 docker ps 命令查看是否创建成功
 
创建需要被共享的文件夹
mkdir -p /data/php7.4.3 && cd /data/php7.4.3

docker 搭建php环境(踩坑经验!!)

 

将镜像内文件拷贝出来
(左边是容器,会连同文件夹一起复制过去,右边是放进哪个文件夹里)
docker cp [临时容器id]:/usr/local/etc /data/php7.4.3
 
启动正式容器
docker run  \
--network my_network  \
--name prod_7.4.3-fpm  \
--restart=always  \
-v /data/php7.4.3/etc:/usr/local/etc \
-v /data/nginx1.24.0/html:/var/www/html \
-d php:7.4.3-fpm
备注:--restart=always 重启自动启动容器
 
没问题后,停止临时镜像,并删除临时镜像
docker stop [临时容器id]
docker rm [临时容器id]
 
php开通 mysql pdo 扩展,php连接mysql会用到
进入php容器后
查看php扩展模块
php -m
安装扩展
docker-php-ext-install pdo pdo_mysql 

docker-php-ext-configure pcntl --enable-pcntl && docker-php-ext-install pcntl

docker-php-ext-install  bcmath

docker-php-ext-install gd

四、安装nginx

理论:全部容器不做端口映射!!用nginx转发,如3306,最好把nginx装在宿主机上!!!

下载镜像

docker pull nginx:1.24.0
 
镜像生成临时容器(用来拷贝配置文件)
docker run -it --name test_nginx1.24.0 -d nginx:1.24.0
 
使用docker ps  查询是否启动成功
 
创建需要被共享的文件夹
mkdir -p /data/nginx1.24.0/conf/cert
mkdir -p /data/nginx1.24.0/conf/conf.d
mkdir -p /data/nginx1.24.0/html
mkdir -p /data/nginx1.24.0/log
mkdir -p /data/nginx1.24.0/ssl
 

docker 搭建php环境(踩坑经验!!)

 

 
将镜像内文件拷贝出来
(左边是容器,会连同文件夹一起复制过去,右边是放进哪个文件夹里)
docker cp [临时容器id]:/etc/nginx/conf.d  /data/nginx1.24.0/conf
docker cp [临时容器id]:/etc/nginx/nginx.conf /data/nginx1.24.0/conf/nginx.conf
docker cp [临时容器id]:/usr/share/nginx/html /data/nginx1.24.0
 
启动正式容器
docker run  \
--network my_network  \
-p 80:80 \
-p 443:443 \
--name prod_nginx1.24.0  \
--restart=always  \
-v /data/nginx1.24.0/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx1.24.0/conf/cert:/etc/nginx/cert \
-v /data/nginx1.24.0/ssl:/etc/nginx/ssl/  \
-v /data/nginx1.24.0/conf/conf.d:/etc/nginx/conf.d \
-v /data/nginx1.24.0/log:/var/log/nginx \
-v /data/nginx1.24.0/html:/var/www/html \
-d nginx:1.24.0
备注:--restart=always 重启自动启动容器
-v /data/nginx1.24.0/html:/usr/share/nginx/html \ 改成  -v /data/nginx1.24.0/html:/var/www/html \ 跟php目录一样,配置网站时不用两个地址
 
没问题后,停止临时镜像,并删除临时镜像
docker stop [临时容器id]
docker rm [临时容器id]
 
如果要新增映射端口,可以进入到nginx容器,后面那个自己修改
/var/lib/docker/containers/61b0179cd4493b7a690e470c63b3fc34dd6bb09f4d5d09a1c91e9c3f38b6511f
或者使用命令

例如,假设已启动的容器的名称为 "my-container",要将容器的 80 端口映射到宿主机的 8080 端口上,可以执行以下命令:

docker container update --publish-add 8080:80 my-container

docker 搭建php环境(踩坑经验!!)

 修改这两个文件

 

五、安装mysql 

下载镜像 
docker pull mysql:5.7.43
 
开启临时镜像(用来拷贝配置文件)
docker run -it --name test_mysql5.7.43 -e MYSQL_ROOT_PASSWORD=root -v /etc/localtime:/etc/localtime:ro -d mysql:5.7.43
 
创建需要被共享的文件夹
mkdir -p /data/mysql5.7.43/conf
mkdir -p /data/mysql5.7.43/log
mkdir -p /data/mysql5.7.43/lib/mysql

docker 搭建php环境(踩坑经验!!)

 

 

将镜像内文件拷贝出来
(左边是容器,会连同文件夹一起复制过去,右边是放进哪个文件夹里)
docker cp [临时容器id]:/var/log /data/mysql5.7.43
docker cp [临时容器id]:/var/lib/mysql /data/mysql5.7.43/lib
docker cp [临时容器id]:/etc/mysql/conf.d /data/mysql5.7.43/conf
docker cp [临时容器id]:/etc/mysql/mysql.conf.d /data/mysql5.7.43/conf
 
启动正式容器
docker run  \
--network my_network  \
--name prod_mysql5.7.43  \
--restart=always  \
-p 3306:3306  \
-v /data/mysql5.7.43/log:/var/log \
-v /data/mysql5.7.43/lib/mysql:/var/lib/mysql \
-v /data/mysql5.7.43/conf:/etc/mysql \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=root123456 \
-d mysql:5.7.43 
 
备注:--restart=always 重启自动启动容器
 
如果root密码错误,用root登录后修改

docker 搭建php环境(踩坑经验!!)

 
没问题后,停止临时镜像,并删除临时镜像
docker stop [临时容器id]
docker rm [临时容器id]
 
# 进入容器
docker exec -it [容器id] bash
mysql -uroot -p
# 创建用户并开启远程登录
CREATE USER 'user_tp'@'%' IDENTIFIED BY 'user_tp_123456';
# 创建数据库并设置字符集
CREATE DATABASE `tp_test` CHARACTER SET 'utf8mb4';
# 给账号授权数据库
GRANT ALL PRIVILEGES ON `tp_test`.* TO 'user_tp'@'%';
# 刷新权限
FLUSH PRIVILEGES;
 
或者直接将root开启远程连接
mysql -uroot -p
GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'root123456 ' WITH GRANT OPTION;
FLUSH PRIVILEGES;
 
 

使用远程工具连接mysql,并建立一个user用户表,后面用来测试

docker 搭建php环境(踩坑经验!!)

 

 如果需要开启binlog日志

docker 搭建php环境(踩坑经验!!)

 

docker 搭建php环境(踩坑经验!!)

 我一般不开启

 

docker 搭建php环境(踩坑经验!!)

 

 

六、运行php项目

将php项目通过ftp上传到  /data/nginx1.24.0/html (上面配置了这个地址会共享到容器内对应的文件夹)

docker 搭建php环境(踩坑经验!!)

 

 新增一个网站配置

docker 搭建php环境(踩坑经验!!)

docker 搭建php环境(踩坑经验!!)

 

下图这样配置,带不带index.php都可以访问,上面那个带了访问不了。

docker 搭建php环境(踩坑经验!!)

 

 

hosts新增一行 (你的windows电脑)

docker 搭建php环境(踩坑经验!!)

 

重启docker

systemctl restart docker

 

在php项目中,新增一个访问数据库的代码

docker 搭建php环境(踩坑经验!!)

 项目连接mysql 

docker 搭建php环境(踩坑经验!!)

 

打开浏览器测试

docker 搭建php环境(踩坑经验!!)

 

安装redis

docker pull redis:7.2.0
mkdir -p /data/redis7.2.0/conf
mkdir -p /data/redis7.2.0/data
touch /data/redis7.2.0/conf/redis.conf
 
 
启动正式容器
docker run  \
--network my_network  \
--name prod_redis7.2.0  \
--restart=always  \
--log-opt max-size=100m  \
--log-opt max-file=2  \
-p 6379:6379  \
-v /data/redis7.2.0/conf/redis.conf:/etc/redis/redis.conf  \
-v /data/redis7.2.0/data:/data  \
-d redis:7.2.0 \
redis-server /etc/redis/redis.conf \
--appendonly yes \
--requirepass redismm123456
备注:--restart=always 重启自动启动容器 
  1. –restart=always 总是开机启动
  2. –log是日志方面的
  3. -p 6379:6379 将6379端口挂载出去
  4. –name 给这个容器取一个名字
  5. -v 数据卷挂载
  • /home/redis/myredis/myredis.conf:/etc/redis/redis.conf 这里是将 liunx 路径下的myredis.conf 和redis下的redis.conf 挂载在一起。
  • /home/redis/myredis/data:/data 这个同上
  1. -d redis 表示后台启动redis
  2. redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是liunx下的/home/redis/myredis/myredis.conf
  3. –appendonly yes 开启redis 持久化
  4. –requirepass 000415 设置密码 (如果你是通过docker 容器内部连接的话,就随意,可设可不设。但是如果想向外开放的话,一定要设置,我被搞过,可以看这篇文章“阿里云服务器中毒‘Kirito666’经历”)
可视化工具(在我阿里云盘)

docker 搭建php环境(踩坑经验!!)

 

 

安装php-redis 扩展
先下载php-redis扩展,不像pdo自带,这个需要自己下载
https://pecl.php.net/package/redis
下载stable标识为稳定版
下载好后,上传

docker 搭建php环境(踩坑经验!!)

 

解压
tar zxvf redis-5.3.7.tgz

docker 搭建php环境(踩坑经验!!)

 

将压缩包复制到容器内
docker cp /data/redis7.2.0/pecl/redis-5.3.7 prod_7.4.3-fpm:/usr/src/php/ext/redis

docker 搭建php环境(踩坑经验!!)

 

开始安装
docker-php-ext-install redis
安装成功

docker 搭建php环境(踩坑经验!!)

 

重启php容器

docker 搭建php环境(踩坑经验!!)

 

docker 搭建php环境(踩坑经验!!)

 

docker 搭建php环境(踩坑经验!!)

 

测试成功!
 

 都是踩坑经验,无私分享,有问题欢迎留言,共同进步!文章来源地址https://www.toymoban.com/news/detail-664709.html

到了这里,关于docker 搭建php环境(踩坑经验!!)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker搭建nginx+php环境

    一、docker拉取nginx和php镜像 命令如下: 1、创建本地挂载路径: 2、创建php容器 3、创建nginx本地挂在路径: 4、nginx配置文件如下: 5、创建nginx容器: PS: 6、创建文件测试: 效果如下: 参考文章:nginx调用php原理

    2024年02月13日
    浏览(44)
  • Docker的配置和部署,并搭建php和nginx环境

    服务器环境:CentOS 7.6 说下体验: 通过安装进度还是有些报错出现的,但是一向“兼容不错的宝塔”还是对他抱有一线希望。 最后还是安装成功了。  装好了,如何使用? Docker 是基于命令行使用的,那现在通过一些实际问题去使用一些命令! 1.首先查看是否安装成功。通过

    2024年02月09日
    浏览(48)
  • Docker搭建LNMP环境实战(08):安装php-fpm

    在文件夹:/mnt/hgfs/dockers/test_site/www目录下创建文件:test.php,内容为: 在文件夹:/mnt/hgfs/dockers/test_site/compose下创建文件:test_site_php.yml,内容如下: 注意:此文件中网络的名称和nginx配置文件中网络的名称是相同的,都是:test_site_network 注意:最后一段为新加的修改 图1 f

    2024年04月13日
    浏览(44)
  • 使用 Docker Compose 部署 RabbitMQ 的一些经验与踩坑记录

    RabbitMQ 是一个功能强大的开源消息队列系统,它实现了高效的消息通信和异步处理。 本文主要介绍其基于 Docker-Compose 的部署安装和一些使用的经验。 成熟,稳定 消息持久化 灵活的消息路由 高性能,高可用性,可扩展性高 支持插件系统:RabbitMQ 具有丰富的插件系统,可以通

    2024年02月06日
    浏览(42)
  • 【k8s系列】使用MicroK8s 5分钟搭建k8s集群含踩坑经验

    MicroK8s 是一个经过 CNCF 认证的轻量级的 Kubernetes开源部署工具,用于自动化部署、扩展和管理容器化应用程序。它在一个小的占用空间中提供了核心 Kubernetes 组件的功能,使其可以从单个节点扩展到高可用性生产集群。MicroK8s 是一个单一的软件包,使开发人员能够在 60 秒内获

    2024年02月06日
    浏览(42)
  • Flutter环境搭建踩坑集锦

    发现一个不错的框架Flutter,听说一套代码就搞定Android和ios,感觉很牛逼,就来试试看,搭环境却不是那么容易,主要还是自己没搞过移动开发吧,踩了一些坑,然后记录一下,相信我遇到的问题别人也会遇到吧,而且不知道多久以后可能还会用上是不是,我可不想踩过的坑

    2024年02月14日
    浏览(28)
  • 修改docker里安装的mysql密码,亲测有效

    首先给大家介绍下docker 如何查看运行中的容器 列出所有在运行的容器信息: 如何启动一个容器 修改mysql密码,首先进入mysql容器 登录mysql 修改密码 至此大功告成!!!

    2024年02月11日
    浏览(54)
  • 谷粒商城笔记+踩坑(1)——架构、项目环境搭建、代码生成器

     导航: 谷粒商城笔记+踩坑汇总篇_谷粒商城笔记踩坑6_vincewm的博客-CSDN博客 目录 1、项目介绍 1.1 微服务架构图 1.2. 微服务划分图 2、项目环境搭建 2.1. 虚拟机搭建环境 2.2. Linux安装docker、配置镜像加速 2.3. docker配置mysql、设置自启动 2.3.1、安装mysql5.7 2.3.2、修改mysql配置文件

    2024年02月01日
    浏览(86)
  • PHP从入门到精通—PHP开发入门-PHP概述、PHP开发环境搭建、PHP开发环境搭建、第一个PHP程序、PHP开发流程

    每开始学习一门语言,都要了解这门语言和进行开发环境的搭建。同样,学生开始PHP学习之前,首先要了解这门语言的历史、语言优势等内容以及了解开发环境的搭建。 PHP概述 Ø 认识PHP PHP最初是由Rasmus Lerdorf于1994年为了维护个人网页而编写的一个简单程序。这个程序用来显

    2024年02月14日
    浏览(65)
  • Selenium+docker 环境部署(报错异常踩坑记)

    背景 团队里开始搞WEB的UI自动化测试相关内容,框架选型是JAVA+SELENIUM+CHROME+WEBDRIVER 本地编写代码,调试运行都OK,我们计划发布到CICD环境进行持续集成了 我们的CICD环境是搭建在云端docker中的一套Jenkins集群,包括了10个slave节点。 期间也遇到不少坑,记录下 坑1: 云端docker需要

    2024年02月15日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包