Nginx + PHP-FPM:在端口9000没问题的情况下,PHP-FPM容器的端口5000上的连接被拒绝

时间:2019-08-01 14:29:19

标签: php docker nginx docker-compose

我正在Docker中进行自我培训,并且试图建立一个我最终想在ECS上托管的Nginx + PHP FPM环境(仅出于培训目的)。 PHP环境运行着一个基本的Symfony 4服务(只返回一个json,没什么特别的)。但是问题出在我的Nginx容器上。 当我在Dockerfile中暴露了PHP容器上的端口5000时,确实发生了一些奇怪的事情,但是当尝试在此端口上访问PHP容器时,我的Nginx容器给我严重的网关错误。如果我将Nginx容器用于fastcgi_pass的端口更改为9000,而未更改PHP容器的公开端口(在Dockerfile中将其保留为5000),则一切都很好,并且设置可以正常进行。 有没有人可以给我一些提示,为什么呢?

我已经检查docker ps来检查端口,并且确实在PHP容器上同时打开了端口5000和9000,但是似乎只有端口9000可用。

Nginx conf文件

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(shortenend)

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容器中获取结果。

0 个答案:

没有答案