2016-01-26 93 views
3

我在Docker中玩弄我的本地开发环境。我现在的设置是5个容器(1个HaProxy + 2个NGINX + 2个PHP7-FPM)。Docker:不同端口上的多个PHP7-FPM容器

代理容器是用来直接根据网址的请求,所以如果我进入http://project1.dev它将请求代理到使用project1-php评估PHP的project1-nginx。该设置与类似。

现在,我试图围绕两个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" 
+0

嗯..你为什么 “靶向” nginx的服务器?它没有任何意义..是你的HAProxy之间的路由器和Nginx之间或Nginx和Fpm之间? – Mjh

+0

我不确定我是否明白您的目标是Nginx的含义?是的,代理位于路由器和nginx之间 – Esben

+1

您正在使用2个nginx服务器,每个服务器都有一个定义'project1.dev'或'project2.dev'的'server {}'块,并且取决于它 - 它们代理它适合'php-fpm'机器。这个逻辑稍微偏离了一点,你甚至不需要HAProxy,在这种情况下它是无用的。但是,这是不合时宜的。你确定第二个'fpm'服务器允许来自'172.17.0.9'的连接吗?默认配置只允许来自本地主机的连接。 – Mjh

回答

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 
相关问题