Vorbereitung einer einfachen Multi-Service-Anwendung
In diesem Schritt bereiten wir eine einfache Multi-Service-Anwendung vor, die wir in diesem Lab verwenden werden, um das Neustarten von Docker-Diensten zu üben. Diese Anwendung besteht aus zwei Diensten: einem Web-Service und einem Datenbank-Service. Wir werden diese Dienste mit einer Docker Compose-Datei definieren.
Zuerst müssen wir Docker Compose installieren. Da es in der LabEx VM-Umgebung nicht vorinstalliert ist, werden wir es herunterladen und installieren.
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Der erste Befehl lädt die Docker Compose-Binärdatei aus dem offiziellen GitHub-Repository herunter und speichert sie unter /usr/local/bin/docker-compose
. Die Teile $(uname -s)
und $(uname -m)
erkennen automatisch Ihr Betriebssystem und die Architektur, um die korrekte Binärdatei herunterzuladen. Der zweite Befehl macht die heruntergeladene Datei ausführbar.
Nun überprüfen wir die Installation, indem wir die Docker Compose-Version anzeigen.
docker-compose --version
Sie sollten eine Ausgabe ähnlich zu Docker Compose version v2.20.2
sehen.
Wechseln Sie nun in das Verzeichnis ~/project
, das Ihr Arbeitsverzeichnis für dieses Lab ist.
cd ~/project
Jetzt erstellen wir eine docker-compose.yml
-Datei, um unsere Multi-Service-Anwendung zu definieren. Diese Datei spezifiziert die Dienste, ihre Images und alle notwendigen Konfigurationen.
nano docker-compose.yml
Fügen Sie folgenden Inhalt in die docker-compose.yml
-Datei ein:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
depends_on:
- db
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: mysecretpassword
In dieser docker-compose.yml
-Datei:
version: '3.8'
gibt die Docker Compose-Dateiformatversion an.
services:
definiert die verschiedenen Dienste unserer Anwendung.
- Der
web
-Service verwendet das nginx:latest
-Image, bildet Port 80 des Hosts auf Port 80 im Container ab und hängt vom db
-Service ab. Das bedeutet, der db
-Service wird vor dem web
-Service gestartet.
- Der
db
-Service verwendet das postgres:latest
-Image und setzt die Umgebungsvariable POSTGRES_PASSWORD
, die vom PostgreSQL-Image benötigt wird.
Speichern Sie die Datei und beenden Sie den nano-Editor (Drücken Sie Strg + X
, dann Y
, dann Enter
).
Bevor wir die Dienste starten, müssen wir die erforderlichen Docker-Images herunterladen.
docker pull nginx:latest
docker pull postgres:latest
Diese Befehle laden die nginx:latest
- und postgres:latest
-Images von Docker Hub herunter.
Starten Sie abschließend die in unserer docker-compose.yml
-Datei definierten Dienste.
docker-compose up -d
Der Befehl docker-compose up -d
erstellt, startet und führt die Dienste im Hintergrund aus (Detached Mode).
Sie können den Status der laufenden Dienste mit folgendem Befehl überprüfen:
docker-compose ps
Sie sollten eine Ausgabe sehen, die anzeigt, dass sowohl der web
- als auch der db
-Service laufen.