LoginSignup
0
0

More than 1 year has passed since last update.

php-fpmのDockerfileでCMDを指定するとコンテナが終了してしまう際の対処法

Posted at

laravelプロジェクトでキュー処理を行いたいため、supervisorをコンテナ起動時にスタートさせるコマンドをDockerfileに記述した際、コンテナがすぐに停止してしまった。

小一時間程度ハマってしまったが、実行したいCMDの最後に 「&& docker-php-entrypoint php-fpm」を付けたら解決しました。

FROM php:8.1-fpm-alpine3.16

RUN apk ...

COPY ./docker/php/laravel-worker.ini /etc/supervisor.d/laravel-worker.ini

WORKDIR /var/www/

CMD /usr/bin/supervisord -c /etc/supervisord.conf && docker-php-entrypoint php-fpm

公式のphp-fpmのDocekrfileの中身を確認すると下記のように、entorypontの指定がありました。

// 省略

ENTRYPOINT ["docker-php-entrypoint"]

WORKDIR /var/www/html

/bin/sh -c set -eux; cd

STOPSIGNAL SIGQUIT

EXPOSE 9000

CMD ["php-fpm"]

Docker hub
https://hub.docker.com/layers/library/php/8.1.12-fpm-alpine3.15/images/sha256-aaf904378932a76daf3c05857fc67e78908a7354e00a61161858b46c2e908b28?context=explore

コンテナ起動時に「docker-php-entrypoint php-fpm」が実行され、php-fpmを起動しているようです。

CMDを独自のコマンドに指定してしまうと元々のCMDを上書きしてしまい、php-fpmが起動しないことで、コンテナが終了してしまっていた模様。

ちゃんと理解してイメージを使うべきということを学びました。

参考:
https://stackoverflow.com/questions/62752220/laravel-docker-cron-nginx-502-bad-gateway-issue-111-connection-refused-while

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0