Generierte Anwendungen mit Docker Compose ausführen
Die Script-Datei zum Aufruf von Docker Compose
Im Unterverzeichnis dockercompose des Anwendungsprojektes befinden sich Dateien, um die Anwendung mit Docker Compose auszuführen. Neben der YML-Datei mit der Compose-Konfiguration der Anwendung und einer ENV-Datei auch Script-Dateien, zum Aufruf von Docker Compose in der Eingabeaufforderung von Windows sowie in der Linux Shell. Die Dateinamen basieren auf dem Anwendungsnamen, der bei der Generierung angegeben wurde:
compose-{anwendungsname}.cmd
compose-{anwendungsname}.sh
Im Falle der Beispielanwendung für den Getränkeautomaten mit dem Namen BeverageVending lauten die Kommandos zum Aufruf von Docker Compose folgendermaßen:
dockercompose> compose-beveragevending.cmd (1)
dockercompose$ ./compose-beveragevending.sh (2)
-
Für Windows.
-
Für Linux.
Wenn die Script-Datei ohne Parameter aufgerufen wird, wird eine Liste von Beispielen mit Parametern für das Starten und Stoppen der Anwendung sowie für einige andere Aktionen im Kontext von Compose ausgegeben.
dockercompose> compose-beveragevending.cmd
Missing command and option for Docker Compose.
Format: compose-beveragevending.cmd [command] [option]. (1)
For instance:
compose-beveragevending.cmd up -d
compose-beveragevending.cmd logs
compose-beveragevending.cmd logs -f
compose-beveragevending.cmd ps
compose-beveragevending.cmd stop
compose-beveragevending.cmd ps -a
compose-beveragevending.cmd start
compose-beveragevending.cmd down
-
Werte, die für [command] und [option] angegeben werden, leitet das Script an Docker Compose weiter.
Die Anwendung in Docker Compose hochfahren, stoppen und neu starten
Folgende Beispiele für die Windows Eingabeaufforderung zeigen einen Durchlauf, bestehend aus den Schritten:
-
Die Anwendung in Docker Compose hochfahren.
-
Den Status der Docker-Container prüfen.
-
Die Anwendung stoppen.
-
Die Anwendung neu starten.
Dabei werden Kommandos und daraus folgende Ausgaben so dargestellt, wie sie im Falle der Beispielanwendung BeverageVending lauten würden, deren Erstellung im Abschnitt Ein Service-Projekt auf Basis eines DEA erstellen beschrieben wurde.
Schritt 1: Die Anwendung in Docker Compose hochfahren.
Das Docker Compose Komanndo up mit der Option -d erzeugt die Anwendung in Docker Compose und führt sie im detached Modus aus.
dockercompose> compose-beveragevending.cmd up -d
Die Option -d (die Kurzform für --detach) führt dazu, dass die Container der Anwendung im Hintergrund ausgeführt werden und die Eingabeaufforderung für die Eingabe weiterer Kommandos zur Verfügung steht.
Unmittelbar nach dem Start wird in der Konsole eine Liste der erzeugten Ressourcen ausgegeben, die über einen begrenzten Zeitraum hinweg laufend aktualisiert wird. Ein Zwischenstand kann z.B. folgender Ausgabe ähneln.
[+] Running 8/9
✔ Network dockercompose_default Created 0.1s
✔ Volume "dockercompose_beveragevending-mongodb-data" Created 0.0s
✔ Volume "dockercompose_beveragevending-rabbitmq-data" Created 0.0s
✔ Container dockercompose-beveragevending-mongodb-1 Healthy 6.6s
- Container dockercompose-beveragevending-rabbitmq-1 Waiting 9.6s
✔ Container dockercompose-beveragevending-entry-1 Created 0.1s
✔ Container dockercompose-beveragevending-state-2-1 Created 0.1s
✔ Container dockercompose-beveragevending-state-3-1 Created 0.1s
✔ Container dockercompose-beveragevending-state-1-1 Created 0.1s
Hinter dem Namen der Ressource steht jeweils der aktuelle Status, z.B. Created, Healthy oder Waiting.
Die automatische Aktualisierung der Ressourcen-Liste hört möglicherweise auf, bevor alle Container den Status Healthy erreicht haben. Die Liste der Ressourcen kann dann z.B. folgender Ausgabe ähneln, bei der einige Container den Status Healthy und einige den Status Started haben. Der Cursor am Ende, in einer neuen Zeile der Eingabeaufforderung signalisiert die Bereitschaft für das nächste Kommando.
[+] Running 9/9
✔ Network dockercompose_default Created 0.1s
✔ Volume "dockercompose_beveragevending-mongodb-data" Created 0.0s
✔ Volume "dockercompose_beveragevending-rabbitmq-data" Created 0.0s
✔ Container dockercompose-beveragevending-mongodb-1 Healthy 6.6s
✔ Container dockercompose-beveragevending-rabbitmq-1 Healthy 19.5s
✔ Container dockercompose-beveragevending-entry-1 Healthy 29.4s
✔ Container dockercompose-beveragevending-state-2-1 Started 30.1s
✔ Container dockercompose-beveragevending-state-3-1 Started 30.0s
✔ Container dockercompose-beveragevending-state-1-1 Started 30.0s
dockercompose> |
Schritt 2: Den Status der Docker-Container prüfen.
Mit Hilfe des Docker Compose Kommandos ps kann die Liste der Container der Anwendung abgerufen werden. Das Ergebnis ähnelt folgender Ausgabe.
dockercompose> compose-beveragevending.cmd ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
dockercompose-beveragevending-entry-1 samples/beveragevending-entry:0.1.0 "sh -c 'java ${JAVA_…" beveragevending-entry About a minute ago Up 51 seconds (healthy) 0.0.0.0:9997->9997/tcp
dockercompose-beveragevending-mongodb-1 mongo:6.0.15-jammy "docker-entrypoint.s…" beveragevending-mongodb About a minute ago Up About a minute (healthy) 0.0.0.0:27017->27017/tcp
dockercompose-beveragevending-rabbitmq-1 rabbitmq:3.13.1-management-alpine "docker-entrypoint.s…" beveragevending-rabbitmq About a minute ago Up About a minute (healthy) 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp
dockercompose-beveragevending-state-1-1 samples/beveragevending-state:0.1.0 "sh -c 'java ${JAVA_…" beveragevending-state-1 About a minute ago Up 40 seconds (healthy)
dockercompose-beveragevending-state-2-1 samples/beveragevending-state:0.1.0 "sh -c 'java ${JAVA_…" beveragevending-state-2 About a minute ago Up 40 seconds (healthy)
dockercompose-beveragevending-state-3-1 samples/beveragevending-state:0.1.0 "sh -c 'java ${JAVA_…" beveragevending-state-3 About a minute ago Up 40 seconds (healthy)
Wenn der Status für alle Services healthy ist, kann die Anwendung verwendet werden, wie im Abschnitt Requests über die integrierte Swagger UI senden beschrieben. (Die Spalte STATUS steht ziemlich weit rechts, an sechster Stelle.)
Schritt 3: Die Anwendung stoppen.
Durch das Docker Compose Kommando stop wird die Anwendung angehalten. D.h. die Container der Anwendung werden gestoppt. Das Ergebnis ähnelt folgender Ausgabe.
dockercompose> compose-beveragevending.cmd stop
[+] Stopping 6/6
✔ Container dockercompose-beveragevending-state-2-1 Stopped 0.5s
✔ Container dockercompose-beveragevending-state-3-1 Stopped 0.7s
✔ Container dockercompose-beveragevending-state-1-1 Stopped 1.3s
✔ Container dockercompose-beveragevending-entry-1 Stopped 1.1s
✔ Container dockercompose-beveragevending-mongodb-1 Stopped 0.6s
✔ Container dockercompose-beveragevending-rabbitmq-1 Stopped 6.5s
Schritt 4: Die Anwendung neu starten.
Durch das Docker Compose Kommando start werden die Container der Anwendung wieder gestartet. Das Ergebnis ähnelt folgender Ausgabe.
dockercompose> compose-beveragevending.cmd start
[+] Running 6/6
✔ Container dockercompose-beveragevending-mongodb-1 Healthy 6.0s
✔ Container dockercompose-beveragevending-rabbitmq-1 Healthy 13.4s
✔ Container dockercompose-beveragevending-entry-1 Healthy 10.8s
✔ Container dockercompose-beveragevending-state-3-1 Started 0.7s
✔ Container dockercompose-beveragevending-state-2-1 Started 0.6s
✔ Container dockercompose-beveragevending-state-1-1 Started 0.7s
Wie oben bei Schritt 1 erläutert, kann die Anwendung erst verwendet werden, wenn der Status aller Container Healthy ist. Dies kann wieder, wie bei Schritt 2 beschrieben, mit Hilfe des Kommandos ps überprüft werden.
Die Anwendung aus Docker Compose entfernen
Zur dauerhaften Entfernung der Anwendung dient das Docker Compose Kommando down. Die Volumes können dabei wahlweise beibehalten werden.
Die Awendung entfernen und Volumes beibehalten
Wenn das Kommando down ohne weitere Optionen angegeben wird, werden die Volumes der Anwendung nicht entfernt.
dockercompose> compose-beveragevending.cmd down
[+] Running 7/7
✔ Container dockercompose-beveragevending-state-2-1 Removed 0.1s
✔ Container dockercompose-beveragevending-state-3-1 Removed 0.1s
✔ Container dockercompose-beveragevending-state-1-1 Removed 0.2s
✔ Container dockercompose-beveragevending-entry-1 Removed 0.1s
✔ Container dockercompose-beveragevending-rabbitmq-1 Removed 0.1s
✔ Container dockercompose-beveragevending-mongodb-1 Removed 0.1s
✔ Network dockercompose_default Removed 0.2s
Die Awendung inklusive Volumes entfernen
Die Option -v (die Kurzform für --volumes) beim Kommando down führt dazu, dass die Volumes der Anwendung mit entfernt werden.
dockercompose> compose-beveragevending.cmd down -v
[+] Running 9/9
✔ Container dockercompose-beveragevending-state-3-1 Removed 0.7s
✔ Container dockercompose-beveragevending-state-1-1 Removed 0.6s
✔ Container dockercompose-beveragevending-state-2-1 Removed 1.6s
✔ Container dockercompose-beveragevending-entry-1 Removed 0.9s
✔ Container dockercompose-beveragevending-rabbitmq-1 Removed 6.6s
✔ Container dockercompose-beveragevending-mongodb-1 Removed 0.6s
✔ Volume dockercompose_beveragevending-mongodb-data Removed 0.0s
✔ Volume dockercompose_beveragevending-rabbitmq-data Removed 0.0s
✔ Network dockercompose_default Removed 0.2s