首頁  >  文章  >  後端開發  >  宿主機的nginx與docker容器裡的php如何關聯?

宿主機的nginx與docker容器裡的php如何關聯?

WBOY
WBOY原創
2016-10-10 11:55:562947瀏覽

我的宿主機部署了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