できない.dev

depends_on

別名: depends_on(Compose)

Docker Compose でサービスの起動順と依存関係を宣言する属性。
短い書き方では「先に起動する」ことしか保証せず、相手が接続できる状態になるまで待たせるには long syntax の condition と healthcheck を組み合わせる。

公開:

定義

depends_onDocker Compose の services 配下で、あるサービスが別のサービスに依存することを宣言する属性である。
Compose は依存先を先に作成・起動し、停止と削除は逆順に行う。公式リファレンス(新しいタブで開く)は、短い書き方では依存先が「healthy」になるのを待たずに依存元を起動すると明記している。

詳細

起動順だけでは足りない典型がデータベースで、コンテナのプロセスが立ち上がってから接続を受け付けるまでに数秒かかる。
long syntax で condition を指定すると待ち方を変えられ、service_started(短い書き方と同じ)、service_healthy(依存先の healthcheck が通るまで待つ)、service_completed_successfully(依存先が正常終了するまで待つ)の 3 つがある。service_healthy は依存先側に healthcheck の定義があって初めて意味を持つ。
Compose v2.17 以降は restart: true で依存先の更新時に依存元を再起動でき、v2.20 以降は required: false で依存先が無くても警告だけで進められる。

よくある誤解

  • depends_on を書けば接続できる状態まで待ってくれる: 短い書き方は起動の順序しか制御しない。
  • 依存先が落ちたら依存元も止まる: 起動時の順序付けであり、実行中の監視や停止の連動ではない。

関連

depends_on で起動順が待たれない がそのままこの仕様の話で、サービス名で DNS 解決できない も依存先の起動タイミングが絡むことがある。

この記事は役立ちましたか?