はじめに
docker-compose.ymlを用意する際にdepends_on設定の扱いについて調べたので記録を残しておきます。
詳細
depends_on設定は依存関係を定義してコンテナの起動順序を制御するものです。
例えばDBコンテナが起動する前にWebサーバが起動しようとすると、Webコンテナ側の起動時にDBに対して接続するdb:migrateのような処理がある場合に、DBが予め起動して接続を受け付けていないとWebコンテナがエラーでコケてしまい起動に失敗することがあります。
そういった時のために予め起動順序を指定できます。
記述例
例えば、以下のように設定したサービスはdbのサービスが起動した後に起動される。
(停止するときは逆にdbが先に停止される。)
depends_on:
- db
また、
depends_on:
db:
condition: service_started
のように、conditionという条件を設定することもできる。
-
service_started: 指定したサービスが起動したら起動する -
service_healthy: 指定したサービスが起動し、更にhealthcheck が通れば起動する -
service_completed_successfully: 指定したサービスが正常終了したら起動する
おわりに
他にも色々と設定項目があるので、順次確認していきたい。