繁体   English   中英

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

[英]Docker: multiple PHP7-FPM containers on different ports

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

代理容器用于根据 url 引导请求,因此如果我输入http://project1.dev它将请求代理到使用project1-php评估 php 的project1-nginx http://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"

对于那些看起来像我一样为不同项目同时运行多个 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 实例的特定端口。

正如@Mjh 在评论中提到的,php-fpm7 有类似的问题,默认情况下 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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM