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

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

代理容器用于根据url来引导请求,所以如果我inputhttp://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" 

与php-fpm7有类似的问题,因为@Mjh在评论中提到,默认fpm听127.0.0.1:9000,

所以你应该用0.0.0.0:9000replace它,

我find了一个解决scheme: 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