2016-01-26 149 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 
相關問題