PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

宿主机的nginx与docker容器里的php如何关联?

原创
2016-10-10 11:55:56 2813浏览

我的宿主机部署了nginx,并启动映射到80端口,
然后我pull了一份php7-fpm的镜像到一个新容器里,并启动映射端口9000:9000,

请问如何才能让宿主机的nginx和容器里的php关联起来呢?望解答谢谢。


10.07
我访问外网ip然后进入的是docker容器里的www根目录(默认是 /var/www/html)
我宿主机的nginx配置如下:

<code>        ······· 
        location / {
            root  /var/www/XX;  #宿主机的web应用所在目录
            index index.html index.php;
        }
        ·······
        location ~ \.php$ {
            root /var/www/XX; #宿主机的web应用所在目录
            fastcgi_pass   192.168.42.18:9000; #docker容器php-fpm分配的内网ip和端口
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name; # /var/www/html 是php容器的页面存放目录
            include        /usr/local/nginx/conf/fastcgi_params; #宿主机nginx所在目录
        }
        </code>

请问如何让外网访问 /var/www/XX 这个目录呢

回复内容:

我的宿主机部署了nginx,并启动映射到80端口,
然后我pull了一份php7-fpm的镜像到一个新容器里,并启动映射端口9000:9000,

请问如何才能让宿主机的nginx和容器里的php关联起来呢?望解答谢谢。


10.07
我访问外网ip然后进入的是docker容器里的www根目录(默认是 /var/www/html)
我宿主机的nginx配置如下:

<code>        ······· 
        location / {
            root  /var/www/XX;  #宿主机的web应用所在目录
            index index.html index.php;
        }
        ·······
        location ~ \.php$ {
            root /var/www/XX; #宿主机的web应用所在目录
            fastcgi_pass   192.168.42.18:9000; #docker容器php-fpm分配的内网ip和端口
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name; # /var/www/html 是php容器的页面存放目录
            include        /usr/local/nginx/conf/fastcgi_params; #宿主机nginx所在目录
        }
        </code>

请问如何让外网访问 /var/www/XX 这个目录呢

首先,容器间连接使用的是--link参数,而不是通过IP,也不是通过-p映射端口。
其次,Nginx搭配PHP的最佳实际是,两个容器挂载相同的数据卷(也就是代码目录)。

建议先熟悉一下Docker的基础使用方法。
https://docs.docker.com/

你的配置中:

<code>fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
</code>

改成:

<code>fastcgi_param  SCRIPT_FILENAME  /var/www/XX/$fastcgi_script_name;</code>

试试;

直接访问nginx就能访问到,nginx会转发请求。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。