在php中添加主pipe:7-fpm图像

我使用php:7-fpm图像,我想安装并使用Supervisor,在后台运行一些PHP脚本(rabbitmq workers)。

我可以轻松安装Supervisor,创buildconf文件并将其添加到映像中。 但是,我不知道如何在容器启动时启动它。 如果我用主pipereplaceCMD,那么php-fpm不会启动。 在docker库中的php-fpm dockerfile结尾处,他们使用CMD ["php-fpm"] ,我尝试将它添加到我的主pipeconf中,并使用CMD /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf ,它启动监督,和一个简单的PHP服务。 但它不工作。

我们可以使用很多CMD吗? 还是有任何简单的解决scheme?

非常感谢你的帮助。

我的Dockerfile:

 FROM php:7.1.5-fpm ############################ # Install PHP requirements # ############################ # Install wget, git and libraries needed by php extensions RUN apt-get update && \ apt-get install -y \ zlib1g-dev \ wget \ git \ supervisor # Remove lists RUN rm -rf /var/lib/apt/lists/* # Compile ICU (required by intl php extension) RUN curl -sS -o /tmp/icu.tar.gz -L http://download.icu-project.org/files/icu4c/58.2/icu4c-58_2-src.tgz && \ tar -zxf /tmp/icu.tar.gz -C /tmp && \ cd /tmp/icu/source && \ ./configure --prefix=/usr/local && \ make && \ make install # Configure, install and enable php extensions RUN docker-php-ext-configure intl --with-icu-dir=/usr/local RUN docker-php-ext-install intl pdo pdo_mysql zip bcmath RUN docker-php-ext-enable opcache # Install Composer RUN php -r "readfile('https://getcomposer.org/installer');" | php -- --install-dir=/usr/local/bin --filename=composer && chmod +x /usr/local/bin/composer # Copy the php.ini file COPY php.ini /usr/local/etc/php/ ################## # Define workdir # ################## WORKDIR /var/www/html/current 

我的docker-compose.yml:

 php: container_name: php build: ./docker/php volumes: - .:/var/www/html/current:rw - ./docker/php/php.ini:/usr/local/etc/php/php.ini:ro - ./docker/php/supervisor/blast_consumer.conf:/etc/supervisor/conf.d/blast_consumer.conf:ro networks: - default 

我的blast_consumer:

 [program:php-fpm] command=/usr/sbin/php-fpm numprocs=1 autostart=true autorestart=true stderr_logfile=/var/log/php-fpm_consumer.err.log stdout_logfile=/var/log/php-fpm_consumer.out.log priority=100 [program:blast_consumer] command=/var/www/html/current/bin/console rabbitmq:consumer blast numprocs=1 autostart=true autorestart=true stderr_logfile=/var/log/blast_consumer.err.log stdout_logfile=/var/log/blast_consumer.out.log priority=200 

我发现php-fpm位于/usr/local/sbin/php-fpm 。 因此请相应地更新您的主pipecommand

 [program:php-fpm] command=/usr/local/sbin/php-fpm numprocs=1 autostart=true autorestart=true stderr_logfile=/var/log/php-fpm_consumer.err.log stdout_logfile=/var/log/php-fpm_consumer.out.log priority=100 [program:blast_consumer] command=/var/www/html/current/bin/console rabbitmq:consumer blast numprocs=1 autostart=true autorestart=true stderr_logfile=/var/log/blast_consumer.err.log stdout_logfile=/var/log/blast_consumer.out.log priority=200 

要获得主pipe的进一步信息,请在容器内执行以下操作:

 supervisorctl status supervisorctl tail php-fpm