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-php-entrypoint php-fpm」が実行され、php-fpmを起動しているようです。
CMDを独自のコマンドに指定してしまうと元々のCMDを上書きしてしまい、php-fpmが起動しないことで、コンテナが終了してしまっていた模様。
ちゃんと理解してイメージを使うべきということを学びました。