Docker イメージ php:7.4.5-apache で Apache の他に cron も動かす方法 – oki2a24 のcrond の実行ログを docker のログに出力するようにしたと思ったが出力されていない、という問題に対処できました。
ポイント
- 対象のプロセスのログを stdout や stderr へ出力しておくことが必要
- Supervisor の対象プロセスの設定で、ログを stdout や stderr へ出力するように設定
- どちらか一方ではダメで、対象プロセス自身のログと Supervisor の対象プロセスの設定の両方で stdout や stderr へ出力すること
実装例
apache2 のログ設定
crond のログ設定
docker/supervisord.conf
補足
Laravel のログを stderr へも出力するようにしております。
これによって、 Laravel のログも Docker ログへと出力されていることを確認できました。
おそらく、 Apache で PHP を動かしていますので、 Apache のログとして扱われているのでは無いかと考えております。
調べたこと
- [supervisor docker log] で検索
- [メモ] Dockerでsupervisordを使うときにログを標準出力する – Qiita
- Configuration File — Supervisor 4.2.0 documentation
残っている問題
- Laravel の Artisan コンソールコマンドから出力したログが、 Docker ログに出力されません。例えばウェブブラウザからコントローラーへアクセスした時のロジックでのログ出力は想定通り Docker ログへと出力されますのに。
おわりに
Docker ログへと出力されなくなってしまったのは痛手と感じておりましたので、 Docker イメージ php:7.4.5-apache で Apache の他に cron も動かす方法 – oki2a24 から前進できたことを非常に嬉しいです。
あとひとつ、問題が解決できればと思います。
以上です。