Docker系列学习 -- (二)多容器构建web基础环境(php+mysql+nginx)

2 篇文章 0 订阅
== 背景:CentOS7操作系统 ==

官方镜像仓库:

一、MySQL:

### 指定版本
docker pull mysql:5.6 
### 创建mysql容器
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mysql_password -d mysql:5.6

二、Nginx:

### 指定版本
docker pull nginx:1.18
### 创建容器(基础容器)
docker run --name nginx -p 80:80 -d nginx:1.18
### 默认情况下,Docker nginx服务器的HTML路径(网站根目录)在容器 /usr/share/nginx/html 目录下
### 项目、nginx配置文件持久化
### 映射容器内根目录至本地服务器
docker run --name nginx -p 80:80 -d -v /本地服务器项目目录/:/usr/share/nginx/html nginx:1.18
### 映射nginx的配置文件
cd /home/nginx
### 拷贝容器nginx内配置文件至本地服务器当前目录
docker cp nginx:/etc/nginx/conf.d/default.conf default.conf

三、PHP:

### 指定版本
docker pull php:7.4
### 创建初始容器
docker run --name php -p 9000:9000 -d php:fpm
### 拷贝配置文件
cd /home/www/php
docker cp php:/usr/local/etc/php-fpm.d/www.conf www.conf
docker cp php:/usr/local/etc/php/php.ini-production php.ini
### 修改配置
vi /home/www/php/phh.ini
### 设置cgi.fix_pathinfo=1(需先删除前面的;注释符)

四、重要的步骤!重要的步骤!重要的步骤!重复三遍

### 链接不同的容器,使其可相关通讯和协作
### 先清除原nginx、php容器
docker stop php && docker rm php
docker stop nginx && docker rm nginx
### 创建php容器
docker run --privileged --name php -p 9000:9000 --link mysql:mysql -v /home/www/web:/var/www/html -v /home/www/php/www.conf:/usr/local/etc/php-fpm.d/www.conf -v /home/www/php/php.ini:/usr/local/etc/php/php.ini -d php:fpm
### 创建nginx容器
#### 修改nginx配置 参考下图详细配置信息
### 生成容器
docker run --privileged --name nginx -p 80:80 --link php:fpm -v /home/www/web:/usr/share/nginx/html -v /home/www//nginx/default.conf:/etc/nginx/conf.d/default.conf -d nginx:1.18

无、注意事项

### 1:如果因为系统防火墙关闭或开启,导致容器创建失败:docker0: iptables: No chain/target/match by that name
### 解决方案:
### 重启docker守护进程即可
service docker restart

### 2:如果构建容器后出现Existe(1)
### 解决方案:
### 删除该容器,重新创建容器可加 --privileged 参数
docker run --privileged --name nginx [imagename]:[版本] -d [容器别名]

### 3: 构建完成后出现无法解析php文件时,请注意检查自己的nginx配置项
### 解决方案:
nginx配置:
server {
	...
	root /nginx容器内根目录[一般默认/usr/share/nginx/html]/
	...
	location / {
		//自定义的转发规则
	}
	...
	localtion ~ \.php$ {
		root  /[php容器根目录,默认/var/www/html]/;
		fastcgi_pass  [php(php容器名称)]:9000;
		...
		#######
		[空白处]
		#######
		# 修改如下
		#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		# 若修改为上述后还是为解决,可将下一行(即include ...)移至上述标记空白处即可
		include fastcgi_params;
	}
	...
}
至此,我们就完成的相关系列的配置,正常运行php的项目了,如果修改本地nginx或这php的配置文件,最好重启一下相应容器:docker restart [容器名]。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bennett_G

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值