docker-compose.yml の depends_on
はあくまでコンテナの依存関係だけであり、アプリの起動や初期化までは待ってくれません。

現在の docker-compose には condition
というのがあり、コンテナの状態をチェックして起動を制御することが可能なようです。
ただ、そのために healthcheck の方法を定義しないといけないなどちょっと面倒だったので、今回は sleep
を入れて無理やり起動を遅らせる方法をとりました。
sleep
の入れ方ですが、以下の2つの方法を思いつきました。
command で指定する例
docker-compose.yml の command
で以下のように記述します。
command: bash -c "sleep 5 && python3 sample.py"
entrypoint で指定
docker-compose.yml の entrypoint
で起動時に実行するスクリプトファイルを指定し、そのスクリプトファイルの中で sleep
を実行します。
entrypoint: "/hoge/entrypoint.sh"