Docker:不同端口上的多个PHP7-FPM容器

时间:2016-01-26 14:38:37

标签: php docker

我正在为我的本地开发环境使用Docker。我现在的设置是5个容器(1个HaProxy + 2个NGINX + 2个PHP7-FPM)。

代理容器用于根据网址引导请求,因此,如果我输入http://project1.dev,它会将请求代理到使用project1-nginx评估php的project1-phphttp://project2.dev的设置类似。

现在,我试图围绕两个php容器的端口。默认的fpm端口是9000,因此两个php容器都无法在此运行。我假设去这里的方法是让两个容器导出端口9000但是在主机上使它们是9000和9001?

我的撰写文件中的这些内容。

project_1_php:
  ports:
    - "9000:9000"
project_2_php:
  ports:
    - "9001:9000"

所以,一切都很好,项目1正在运行,但项目2给了我一个502.Nginx错误日志说

2016/01/26 14:37:05 [error] 6#6: *1 connect() failed (111: Connection refused) 
while connecting to upstream, client: 172.17.0.9, server: code.dev, 
request: "GET / HTTP/1.1", upstream: "fastcgi://172.17.0.4:9001"

3 个答案:

答案 0 :(得分:0)

与php-fpm7有类似的问题, 正如@Mjh在评论中提到的那样,默认情况下fpm听127.0.0.1:9000,

所以你应该用0.0.0.0:9000替换它,

我在那里找到了一个解决方案:githib:matriphe/docker-alpine-nginx

所以你可以添加到你的fpm容器Dockerfile:

RUN sed -i "s|;*listen\s*=\s*127.0.0.1:9000|listen = 9000|g" /etc/php7/php-fpm.conf

答案 1 :(得分:0)

对于那些看起来像我为同时为不同项目同时运行多个NGINX和PHP-FPM容器的方法所做的工作,发现此SO线程遇到了这个问题:

https://github.com/docker-library/php/issues/479

在php-fpm Dockerfile中:

FROM php:7.2-fpm
RUN sed -i 's/9000/3001/' /usr/local/etc/php-fpm.d/zz-docker.conf

然后在您的docker-compose.yaml文件中,您可以将Nginx指向该PHP-FPM实例的特定端口。

答案 2 :(得分:-1)

只是想我会提到 Traefik Proxy 是处理这种情况的绝佳方式