docker使用宿主机端口映射的方式创建两个容器运行的PHP环境

docker的其他两种容器互联方法:

docker使用--link的方式创建两个容器运行的PHP环境

docker使用network的方式创建两个容器运行的PHP环境

 

这个实例为了演示docker容器互联的案例之一。

该互联采用的方案是宿主机端口绑定达到其中nginx容器使用PHP容器的PHP解释执行程序。

docker -p参数使用,跟主机网络端口绑定,相当于是主机上的应用。

创建两个容器,PHP如下,采用的是php7,php-fpm模式运行

docker run -it -d --name php -p 9000:9000 -v /tmp:/usr/share/nginx/html phpdockerio/php7-fpm

创建nginx容器,

docker run -it -d -p 8080:80 -v /tmp:/usr/share/nginx/html --name=nginx nginx

备注:这里做了端口映射和将本地目录挂载到容器目录,之所以让两个容器都映射到宿主机同一目录,下文有解释,保证nginx和PHP容器都能访问到文件,否则环境配置失败,找不到文件错误。

配置运行,

php-fpm默认运行在端口9000上,在nginx.conf中配置如下,

红线部分是开启php解释执行程序,由于是远程容器生成的PHP环境,这里的root配置应该为PHP环境的目录,不在nginx容器中。

fastcgi_pass,填入宿主机的ip:9000,这里不能填入PHP容器的IP,PHP容器ip是访问不到的。

下面部分从其他博文转摘而来。这里写图片描述

 

请注意这里有两个路径,一个是root(图1的地方),这里指的是请求到达根nginx后根路径/访问的服务器的文件地址。

重点注意第二个:
因为在解析PHP的location中,进入到这个location中的请求,都是需要php-fpm去解析的,在图中2标记的地方,是告诉php-fpm,在php-fpm所在的机器上,需要解析的PHP代码在什么路径。通常标记2的地方的默认写法都是fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 会将图二中/data/www的路径由变量$document_root代替,而这个时候,由于没有特殊的指定$document_root,所以,通常都是指server下的root路径。如果同一台机器下还可以,但是nginx和php-fpm不同机器就不行了,必须指定php-fpm机器下的路径。(PS:也就是说nginx和php-fpm所在的两台机器下都要有代码。)
以上配置参考博文:https://blog.csdn.net/i6448038/article/details/77435897

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值