Verwendung von docker compose wait mit spezifischen Services
Im vorherigen Schritt haben wir docker compose wait
verwendet, um auf das Stoppen aller Services zu warten. In diesem Schritt lernen wir, wie man docker compose wait
nutzt, um auf bestimmte Services in einem bestimmten Zustand zu warten.
Starten wir zunächst unsere Services erneut mit docker-compose up -d
. Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project
befinden.
cd ~/project
docker-compose up -d
Überprüfen Sie mit docker-compose ps
, dass beide Services laufen.
docker-compose ps
Öffnen Sie nun ein neues Terminalfenster oder einen neuen Tab. Wir werden dieses neue Terminal verwenden, um das Warten auf einen spezifischen Service zu demonstrieren.
Navigieren Sie im neuen Terminalfenster zum Verzeichnis ~/project
.
cd ~/project
Wir können angeben, auf welche Services gewartet werden soll, indem wir deren Namen nach dem docker compose wait
-Befehl angeben. Zum Beispiel, um nur auf das Stoppen des web
-Services zu warten:
docker compose wait web
Ähnlich wie im vorherigen Schritt blockiert dieser Befehl, da der web
-Service derzeit läuft.
Wechseln Sie nun zurück zu Ihrem ursprünglichen Terminalfenster. Wir werden nur den web
-Service stoppen. Dazu können wir den docker stop
-Befehl mit dem Containernamen verwenden. Den Containernamen finden Sie mit docker ps
. Er wird wahrscheinlich project-web-1
lauten.
cd ~/project
docker stop project-web-1
Ersetzen Sie project-web-1
durch den tatsächlichen Containernamen, falls dieser abweicht.
Beobachten Sie die Ausgabe im ursprünglichen Terminalfenster. Sie sehen eine Meldung, die anzeigt, dass der web
-Container gestoppt wird.
Wechseln Sie nun zurück zum neuen Terminalfenster, in dem Sie docker compose wait web
ausgeführt haben. Da der web
-Service gestoppt wurde, erkennt der docker compose wait web
-Befehl dies und wird beendet.
Sie sollten sehen, dass die Eingabeaufforderung im neuen Terminalfenster zurückkehrt. Beachten Sie, dass der docker compose wait web
-Befehl beendet wurde, obwohl der db
-Service noch läuft.
Um zu bestätigen, dass der db
-Service noch läuft, wechseln Sie zurück zum ursprünglichen Terminal und führen Sie docker-compose ps
aus.
cd ~/project
docker-compose ps
Sie sollten den db
-Service mit dem Status Up
sehen, während der web
-Service nicht mehr aufgelistet ist oder einen gestoppten Status anzeigt.
Stoppen Sie abschließend den verbleibenden db
-Service.
cd ~/project
docker-compose down
Sie haben erfolgreich docker compose wait
verwendet, um zu blockieren, bis ein spezifischer Service gestoppt wurde.