Docker環境でのwhenever(schedule.rbファイル)

wheneverを使って定期実行を実装しようとした場合下記のようなコードがヒットしますが、Docker環境だとこのコードではcronがきちんと動かずログにエラーが溜まります。

なぜcronがきちんと動かずにエラーになるかというと

cronがDockerでの環境変数を認識できていないから というのが結論になります

cronはUnix系OSに組み込まれているため、Unix系OS上で Railsアプリケーションを作ってその中でwheneverを使って定期実行を実装しようとするなら、 cronは環境変数を認識できる ため、上記のヒットするコードで実装出来ます

一方でDocker環境でRailsアプリケーションを作った場合、Dockerコンテナは軽量な仮想化環境であり、通常は特定のアプリケーションを実行するために必要最小限の環境を提供するため、Dockerコンテナ内で cronジョブを設定すると cronが環境変数を認識できず エラーになります。

なのでDockerコンテナ内でcronジョブを設定したい場合、wheneverなどのツールで環境変数を明示的に設定する必要があります。

したがって、Docker環境でのwheneverの設定(schedule.rb)ファイルは以下のようになります

参考にしたサイト

Dockerコンテナ以外でのwhenever

https://study-diary.hatenadiary.jp/entry/2020/10/09/092047

Dockerコンテナでのwhenever