Docker Nginx连接到私有docker网络上的PHP-FPM

时间:2017-10-01 18:18:46

标签: php docker nginx

我正在尝试将我的docker nginx容器连接到我的docker php7容器。我已经连接到私人桥接网络,因为我希望我的php引擎脱机。启动我的nginx容器时,我收到错误:

nginx: [emerg] host not found in upstream "php7" in 
 etc/nginx/conf.d/default.conf:11

我的php容器命令(先运行):

docker run -d \
    --name php7 \
    -v /php7:/usr/local/etc \
    -v /www_data:/www \
    --network=priv-bridge-net \
    -p 9000:9000 \
    php:7.0.24-fpm

我的nginx命令:

docker run -d \
    --name nginx \
    -v /nginx_conf:/etc/nginx \
    -v /www_data:/usr/share/nginx/html \
    --network=priv-bridge-net \
    nginx:1.13.5

我的nginx配置:

server {
    index index.php index.html;
    server_name test;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /usr/share/nginx/html;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php7:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

请帮我弄清楚我做错了什么。谢谢! 第二个问题,我可以从php容器中删除-p 9000:9000,因为它与nginx服务器位于同一个网桥上。

1 个答案:

答案 0 :(得分:2)

好的,所以我的上述问题是正确的答案。我只是在启动容器的顺序方面遇到麻烦(我也有反向代理和其他人在玩,它有点令人困惑)。

对于想要将docker nginx连接到docker php的人来说,这是正确的设置:

我的php容器命令(先运行):

docker run -d \
    --name php7 \
    -v /php7:/usr/local/etc \
    -v /www_data:/www \
    --network=priv-bridge-net \
    -p 9000:9000 \
    php:7.0.24-fpm

我的nginx命令:

docker run -d \
    --name nginx \
    -v /nginx_conf:/etc/nginx \
    -v /www_data:/usr/share/nginx/html \
    --network=priv-bridge-net \
    nginx:1.13.5

我的nginx配置:

server {
    index index.php index.html;
    server_name test;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /usr/share/nginx/html;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php7:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}