我如何开始与supervisord的php7.0-fpm?

我正在尝试用php7.0-fpmbuild立一个dockerized的ubuntu 16.04lts与apache2和nginx

我用过的命令,但没有工作

[program:php-fpm7.0] command = /usr/sbin/php-fpm7.0 --daemonize --fpm-config /etc/php/7.0/fpm/php-fpm.conf autostart=true autorestart=true priority=5 stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 

 [program:php-fpm7.0] command = /usr/sbin/php-fpm7.0 -c /etc/php/7.0/fpm/php-fpm.conf autostart=true autorestart=true priority=5 stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 

 [program:php-fpm7.0] command = /usr/sbin/php-fpm7.0 -c /etc/php/7.0/fpm autostart=true autorestart=true priority=5 stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 

下面是当我尝试作为容器运行时来自docker的错误日志

从apache2容器

 2016-06-26 20:04:21,488 CRIT Set uid to user 0 2016-06-26 20:04:21,496 INFO RPC interface 'supervisor' initialized 2016-06-26 20:04:21,496 CRIT Server 'unix_http_server' running without any HTTP authentication checking 2016-06-26 20:04:21,496 INFO supervisord started with pid 8 2016-06-26 20:04:22,499 INFO spawned: 'php-fpm7.0' with pid 11 2016-06-26 20:04:22,500 INFO spawned: 'apache2' with pid 12 2016-06-26 20:04:22,571 INFO exited: apache2 (exit status 0; not expected) [26-Jun-2016 20:04:22] ERROR: Unable to create the PID file (/run/php/php7.0-fpm.pid).: No such file or directory (2) [26-Jun-2016 20:04:22] ERROR: FPM initialization failed 2016-06-26 20:04:22,609 INFO exited: php-fpm7.0 (exit status 78; not expected) 2016-06-26 20:04:23,611 INFO spawned: 'php-fpm7.0' with pid 74 2016-06-26 20:04:23,613 INFO spawned: 'apache2' with pid 75 httpd (pid 16) already running 2016-06-26 20:04:23,669 INFO exited: apache2 (exit status 0; not expected) [26-Jun-2016 20:04:23] ERROR: Unable to create the PID file (/run/php/php7.0-fpm.pid).: No such file or directory (2) [26-Jun-2016 20:04:23] ERROR: FPM initialization failed 2016-06-26 20:04:23,694 INFO exited: php-fpm7.0 (exit status 78; not expected) 2016-06-26 20:04:25,698 INFO spawned: 'php-fpm7.0' with pid 79 2016-06-26 20:04:25,700 INFO spawned: 'apache2' with pid 80 httpd (pid 16) already running 2016-06-26 20:04:25,758 INFO exited: apache2 (exit status 0; not expected) [26-Jun-2016 20:04:25] ERROR: Unable to create the PID file (/run/php/php7.0-fpm.pid).: No such file or directory (2) [26-Jun-2016 20:04:25] ERROR: FPM initialization failed 2016-06-26 20:04:25,784 INFO exited: php-fpm7.0 (exit status 78; not expected) 2016-06-26 20:04:28,788 INFO spawned: 'php-fpm7.0' with pid 84 2016-06-26 20:04:28,789 INFO spawned: 'apache2' with pid 85 httpd (pid 16) already running 2016-06-26 20:04:28,847 INFO exited: apache2 (exit status 0; not expected) 2016-06-26 20:04:28,857 INFO gave up: apache2 entered FATAL state, too many start retries too quickly [26-Jun-2016 20:04:28] ERROR: Unable to create the PID file (/run/php/php7.0-fpm.pid).: No such file or directory (2) [26-Jun-2016 20:04:28] ERROR: FPM initialization failed 2016-06-26 20:04:28,872 INFO exited: php-fpm7.0 (exit status 78; not expected) 2016-06-26 20:04:29,873 INFO gave up: php-fpm7.0 entered FATAL state, too many start retries too quickly 

来自nginx容器

 2016-06-26 11:19:02,307 CRIT Set uid to user 0 2016-06-26 11:19:02,320 INFO RPC interface 'supervisor' initialized 2016-06-26 11:19:02,320 CRIT Server 'unix_http_server' running without any HTTP authentication checking 2016-06-26 11:19:02,321 INFO supervisord started with pid 14 2016-06-26 11:19:03,323 INFO spawned: 'php7.0-fpm' with pid 17 2016-06-26 11:19:03,324 INFO spawned: 'nginx' with pid 18 [26-Jun-2016 11:19:03] ERROR: unable to bind listening socket for address '/run/php/php7.0-fpm.sock': No such file or directory (2) [26-Jun-2016 11:19:03] ERROR: FPM initialization failed 2016-06-26 11:19:03,406 INFO exited: php7.0-fpm (exit status 78; not expected) 2016-06-26 11:19:04,409 INFO spawned: 'php7.0-fpm' with pid 20 2016-06-26 11:19:04,409 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) [26-Jun-2016 11:19:04] ERROR: unable to bind listening socket for address '/run/php/php7.0-fpm.sock': No such file or directory (2) [26-Jun-2016 11:19:04] ERROR: FPM initialization failed 2016-06-26 11:19:04,465 INFO exited: php7.0-fpm (exit status 78; not expected) 2016-06-26 11:19:06,470 INFO spawned: 'php7.0-fpm' with pid 21 [26-Jun-2016 11:19:06] ERROR: unable to bind listening socket for address '/run/php/php7.0-fpm.sock': No such file or directory (2) [26-Jun-2016 11:19:06] ERROR: FPM initialization failed 2016-06-26 11:19:06,527 INFO exited: php7.0-fpm (exit status 78; not expected) 2016-06-26 11:19:09,532 INFO spawned: 'php7.0-fpm' with pid 30 [26-Jun-2016 11:19:09] ERROR: unable to bind listening socket for address '/run/php/php7.0-fpm.sock': No such file or directory (2) [26-Jun-2016 11:19:09] ERROR: FPM initialization failed 2016-06-26 11:19:09,592 INFO exited: php7.0-fpm (exit status 78; not expected) 2016-06-26 11:19:10,594 INFO gave up: php7.0-fpm entered FATAL state, too many start retries too quickly 2016/06/26 11:19:13 [info] 19#19: *1 client closed connection while waiting for request, client: 192.168.99.1, server: 0.0.0.0:80 

所以我的问题是我如何正确使用supervisord在docker的容器中启动php7.0-fpm / php-fpm7.0。

也明白,当我login到这些容器,并运行此命令,然后开始工作!所以我做错了什么

 service php7.0-fpm start 

当我运行上述命令后,fpm无法启动容器运行时,然后它的工作原理。 但是,我如何与supervisord做到这一点? 所以我不需要手动启动init.d

我看到没有/run/php/php7.0-fpm.pid文件。 这个文件是在php7.0-fpm启动时创build的。 所以我通过添加到Dockerfile来解决这个问题:

 RUN服务php7.0-fpm启动

当然在php-fpm安装后:)

在构build中创build/var/run/php ,即mkdir -p /var/run/php ,然后在supervisord中启动php-fpm

 [supervisord] nodaemon=true [program:php-fpm] command=/usr/sbin/php-fpm7.0 -F autostart=true autorestart=unexpected stdout_logfile=/var/log/php-fpm/stdout.log stdout_logfile_maxbytes=0 stderr_logfile=/var/log/php-fpm/stderr.log stderr_logfile_maxbytes=0 exitcodes=0 

也有效。

如果你复制上面的粘贴,请确保mkdir -p /var/log/php-fpm为supervisord写入日志文件。