我正在为我的本地开发环境使用 Docker。我现在的设置是 5 个容器(1 个 HaProxy + 2 个 NGINX + 2 个 PHP7-FPM)。
代理容器用于根据 url 定向请求,所以如果我输入 http://project1.dev
它会将请求代理到 project1-nginx
使用 project1-php
评估 php。 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 实例的特定端口。
关于php - Docker:不同端口上的多个 PHP7-FPM 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35016435/