我有一个基于php和nginx图像的Web应用程序......一切都运行得很好,直到我在PHP配置下设置了一个命令:command: /usr/bin/supervisord -c /symfony/supervisord.conf
docker-compose.yml
version: '2'
services:
php:
build: docker/php
tty: true
volumes:
- '.:/symfony'
command: /usr/bin/supervisord -c /symfony/supervisord.conf
nginx:
image: nginx:1.11
tty: true
volumes:
- './public/:/symfony'
- './docker/nginx/default.conf:/etc/nginx/conf.d/default.conf'
ports:
- '80:80'
links:
- php
这是我的默认. conf
server {
server_name ~.*;
location / {
root /symfony;
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
client_max_body_size 50m;
fastcgi_pass php:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /symfony/public/index.php;
}
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
}
这是我的上级配置文件
[unix_http_server]
file=/tmp/supervisor.sock
[supervisord]
logfile=/tmp/supervisord.log
pidfile=/var/run/supervisord.pid
nodaemon=true
Nginx日志显示:
nginx_1|2018年10月2日00:42:36 [错误] 11#11:* 1个连接()失败(111:连接被拒绝),客户端:www.example.com,服务器:~. *,请求:172.23.0.1"快速目录名称://172. 23. 0. 2:9000",主机:"示例网站" "fastcgi://172.23.0.2:9000", host: "127.0.0.1"
正如我们所看到的,nginx报告了一个502 Bad Gateway错误。如果我删除最后一行CMD,一切都正常。如果我删除该行并通过docker-compose exec php bash
访问,然后手动启动命令,一切都正常。
知道为什么添加该命令会导致502坏网关吗?
2条答案
按热度按时间mfuanj7w1#
好的,我找到了一个解决方案,这是管理程序的问题。因为每次我们启动服务管理程序时,
php-fpm service
都会自动停止,这就是为什么它应该添加一个重新启动php-fpm
的配置,但这次是从管理程序配置中。zu0ti5jz2#
对于有类似问题的其他人:
不要忘记
docker-compose.yml
文件中的command
键覆盖了Dockerfile
中的默认CMD
,因此该命令不会运行。例如,如果php:7.4-fpm
的最终命令是CMD php-fpm
,则该命令不会运行。因此,如果您有一些自定义逻辑用于在container运行后运行,请不要忘记将其包含在
command
中,例如: