特定サービスに対する docker compose wait の使用方法
前のステップでは、docker compose waitを使用してすべてのサービスが停止するのを待機しました。このステップでは、特定のサービスが特定の状態になるまで待機する方法を学びます。
まず、docker-compose up -dを使用してサービスを再起動します。~/projectディレクトリにいることを確認してください。
cd ~/project
docker-compose up -d
docker-compose psを使用して両方のサービスが実行中であることを確認します。
docker-compose ps
次に、新しいターミナルウィンドウまたはタブを開きます。この新しいターミナルで特定のサービスを待機するデモンストレーションを行います。
新しいターミナルウィンドウで、~/projectディレクトリに移動します。
cd ~/project
docker compose waitコマンドの後にサービス名を指定することで、待機対象のサービスを選択できます。例えば、webサービスのみが停止するのを待機する場合:
docker compose wait web
前のステップと同様に、このコマンドはwebサービスが現在実行中であるためブロックされます。
次に、元のターミナルウィンドウに戻ります。ここではwebサービスのみを停止します。docker stopコマンドとコンテナ名を使用して行います。コンテナ名はdocker psで確認でき、おそらくproject-web-1のような名前になっています。
cd ~/project
docker stop project-web-1
実際のコンテナ名が異なる場合は、project-web-1を適切な名前に置き換えてください。
元のターミナルウィンドウの出力を確認すると、webコンテナが停止中であることを示すメッセージが表示されます。
次に、docker compose wait webを実行した新しいターミナルウィンドウに戻ります。webサービスが停止したため、docker compose wait webコマンドはこれを検知して終了します。
新しいターミナルウィンドウでコマンドプロンプトが戻ってくるのが確認できます。dbサービスがまだ実行中であっても、docker compose wait webコマンドは終了していることに注目してください。
dbサービスがまだ実行中であることを確認するため、元のターミナルに戻ってdocker-compose psを実行します。
cd ~/project
docker-compose ps
dbサービスがUp状態で表示され、webサービスは表示されないか停止状態になっているはずです。
最後に、残っているdbサービスを停止します。
cd ~/project
docker-compose down
これで、特定のサービスが停止するまでdocker compose waitを使用して待機することに成功しました。