2017-06-09 23 views
1

私はphp:7-fpmイメージを使用しています。スーパーバイザーをインストールして使用し、バックグラウンドでいくつかのPHPスクリプト(rabbitmq workers)を実行します。php:7-fpmイメージにスーパーバイザを追加

私は簡単にスーパーバイザーをインストールし、confファイルを作成してイメージに追加できます。しかし、私はコンテナの開始時にそれを起動する方法を知らない。 super CMDをスーパーバイザに置き換えた場合、php-fpmは起動しません。ドッカーライブラリのphp-fpmドッカーファイルの最後には、CMD ["php-fpm"]が使用されています。私はスーパーバイザconfに追加しようとしました。CMD /usr/bin/supervisord -n -c /etc/supervisor/supervisord.confを使用し、スーパーバイザーと簡単なPHPサービスを開始します。しかし、それは動作しません。

多くのCMDを使用できますか?それとも単純な解決策がありますか?

ありがとうございました。

マイ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 

マイドッキングウィンドウ-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 
+0

あなたの構成がOKに見えます。コンテナ出力は何ですか? – Robert

+0

コンテナと同じように動作しますが、スーパーバイザーは起動していません.Dockerfileで起動しないためです。しかし、もし私が監督を開始すると、PHPが起動しない... – mpiot

答えて

3

Iは、PHP-FPMが/usr/local/sbin/php-fpmに位置していることを参照してください。だから、それに応じて上司commandを更新:

[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 

は上司の更なる情報を持っているために、この容器内部の操作を行います。

supervisorctl status 
supervisorctl tail php-fpm 
関連する問題