[英]Nginx + PHP-FPM: Connection refused on port 5000 of PHP-FPM container while port 9000 is no problem
我正在 Docker 中训练自己,我正在尝试设置一个 Nginx + PHP FPM 环境,我最终想在 ECS 上托管(仅用于培训目的)。 PHP 环境有一个基本的 Symfony 4 服务正在运行(只是返回一个 json,没什么特别的)。 然而,问题在于我的 Nginx 容器。 Something really strange happens as I have exposed the port 5000 on the PHP container in my Dockerfile for it but my Nginx container is giving me bad gateway errors when trying to access the PHP container at this port. 如果我将 Nginx 容器用于 fastcgi_pass 的端口更改为 9000,同时不更改 PHP 容器的暴露端口(在 Dockerfile 中将其保留为 5000),一切都很好,设置正常。 有没有人可以给我一些提示,为什么会这样?
我检查了docker ps
以检查端口,实际上 PHP 容器上的端口 5000 和 9000 都打开了,但似乎只有端口 9000 可用。
Nginx 配置文件
server {
listen 80;
server_name localhost;
root /var/www/symfony/public;
index index.php;
access_log /var/log/access.log;
error_log /var/log/error.log;
location ~ \.php$ {
include fastcgi_params;
fastcgi_param HTTPS off;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass symfony:9000;
fastcgi_index index.php;
}
}
Symfony dockerfile(缩短)
FROM php:7.2-fpm
WORKDIR /var/www/symfony
... (installation things)
COPY . /var/www/symfony
EXPOSE 5000
Docker-compose
version: "3.7"
services:
symfony:
container_name: symfony
build: ./symfony
volumes:
- ./symfony:/var/www/symfony
- ./logs/symfony:/var/www/symfony/var/logs
networks:
- api
nginx:
container_name: nginx
build: ./nginx
ports:
- 80:80
volumes:
- ./symfony:/var/www/symfony
- ./logs/nginx:/var/log/nginx
networks:
- api
depends_on:
- symfony
volumes:
symfony:
networks:
api:
driver: "bridge"
Docker ps 结果
PORTS NAMES
0.0.0.0:80->80/tcp nginx
5000/tcp, 9000/tcp symfony
我希望能够将 symfony:9000 更改为 symfony:5000 并能够从 PHP 容器中获得结果。
很高兴见到你
在官方 docker php 映像中,有 /usr/local/etc/php-fpm.d/zz-docker.conf... 很快 zz-docker.conf 配置文件将 'listen="what you want"' 更改为 '听= 9000'。 因此,您需要更改(或删除)zz-docker.conf。
相关评论: https://github.com/docker-library/php/issues/241
希望解决您的问题。 谢谢你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.