cronで環境変数を違和感なく使う
したいこと
具体的にはdocker compose
のyaml
ファイル(docker-compose.yml
)で指定した環境変数をcronで使いたい。
設定値をハードコードしておくのは書き換えが多い場合は非常に面倒なので。
しかし、そのままcrontab
は環境変数が必要最小限のものしか用意してくれないので、なんとかする必要がある。
すること
こちらが参考になった。
Just a moment...
ログインシェルとして実行すればいいので、* * * * * bash -l -c <script>
のようにすればいい。
比較用crontab
は以下。env
の出力情報が異なるはず:
* * * * * bash -l -c "env"
* * * * * bash -c "env"
他の方法もある
ケースによっては異なる読み込み方法の方がセキュリティ上は安心だろう。crontab
内に環境変数を設定したり、crontab
に-l
を付与したshebang
を追加したり、コマンド実行の前に環境変数設定スクリプトを実行したりなど、方法は様々あるようだ。
今回はDockerのコンテナ内での実行なのでこれで大丈夫なはず。
以上です。