2
votes

I have a web application based on php and nginx images ... Everything works great until I set a command under the PHP configuration: 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

This is my default.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;
}

This is my supervisord.conf

[unix_http_server]
file=/tmp/supervisor.sock

[supervisord]
logfile=/tmp/supervisord.log
pidfile=/var/run/supervisord.pid
nodaemon=true

Nginx logs show me:

nginx_1 | 2018/10/02 00:42:36 [error] 11#11: 1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.23.0.1, server: ~., request: "GET / HTTP/1.1", upstream: "fastcgi://172.23.0.2:9000", host: "127.0.0.1"

As we see, nginx report a 502 Bad Gateway error. If i remove the last line, CMD, everything works fine. If I remove the line and I acess via docker-compose exec php bash and launch the command manually everything work also.

Any Idea why adding that command leads to 502 Bad Gateway ??

1

1 Answers

6
votes

Ok I found a solution It was a problem with supervisor. Because each time we launch our service supervisor, the php-fpm service is stopped automatically that's why it should add a configuration that will relaunch the php-fpm but this time from supervisor configuration.

[program:php-fpm]
command = /usr/local/sbin/php-fpm
autostart=true
autorestart=true