Verwaltung von Multi-Container-Anwendungen
Swipe um das Menü anzuzeigen
Beim Erstellen moderner Anwendungen müssen häufig mehrere Dienste gleichzeitig ausgeführt werden – wie Webserver, Datenbanken und Caches –, die miteinander kommunizieren und als einheitliches System funktionieren sollen. Docker Compose vereinfacht diesen Prozess, indem Sie alle Ihre Dienste, deren Abhängigkeiten und deren Interaktionen in einer einzigen docker-compose.yml-Datei definieren können.
Definieren von Abhängigkeiten und Dienstverknüpfungen in docker-compose.yml
In Ihrer docker-compose.yml kann jeder Dienst Abhängigkeiten deklarieren und angeben, wie er sich mit anderen verbindet. Der Schlüssel depends_on ermöglicht es, die Startreihenfolge der Dienste festzulegen, sodass beispielsweise eine Datenbank läuft, bevor Ihre Anwendung eine Verbindung herstellt. Zusätzlich erstellt Compose automatisch ein Standardnetzwerk für Ihr Projekt, sodass Dienste sich gegenseitig über den Dienstnamen im Netzwerk finden und miteinander kommunizieren können.
Angenommen, Sie haben eine Webanwendung, die auf eine Datenbank angewiesen ist. In Ihrer Compose-Datei definieren Sie die Dienste wie folgt:
version: "3.8"
services:
app:
build: .
depends_on:
- db
db:
image: postgres:15
Hier gilt:
- Der Dienst
appist abhängig vondb; - Compose startet den Datenbank-Container vor der Anwendung;
- Beide Dienste können sich innerhalb des Compose-Netzwerks gegenseitig über die Dienstnamen als Hostnamen ansprechen.
Strategien zum Skalieren von Diensten und Aktualisieren von Konfigurationen
Docker Compose ermöglicht eine einfache horizontale Skalierung von Diensten. Wenn Ihre Anwendung mehr Traffic bewältigen muss, können Sie die Anzahl der Container für einen Dienst mit dem --scale-Flag beim Ausführen von docker compose up erhöhen.
Um drei Instanzen Ihres Anwendungsdienstes zu starten, verwenden Sie:
docker compose up --scale app=3
- Dieser Befehl startet drei Container für den Dienst
app; - Alle Container sind mit demselben Netzwerk verbunden und können Ressourcen wie eine Datenbank gemeinsam nutzen;
- Beim Skalieren sollte sichergestellt werden, dass Ihre Dienste zustandslos sind oder mehrere Instanzen korrekt verarbeiten können.
Das Aktualisieren von Konfigurationen in einer Compose-Umgebung ist unkompliziert:
- Ändern Sie Ihre
docker-compose.yml– zum Beispiel durch Anpassen von Umgebungsvariablen, Ressourcenlimits oder Service-Images; - Übernehmen Sie die Änderungen mit folgendem Befehl:
docker compose up -d
- Dieser Befehl erstellt nur die Dienste neu, deren Konfiguration sich geändert hat, wodurch Ausfallzeiten minimiert werden.
Überwachen und Troubleshooting von Multi-Container-Anwendungen mit Compose
Beim Betrieb mehrerer Container sind Überwachung und Fehlersuche entscheidend. Docker Compose stellt Werkzeuge bereit, mit denen Sie den Zustand und die Logs Ihrer Dienste beobachten können. Die Ausgaben aller Container können Sie in Echtzeit anzeigen mit:
docker compose logs -f
Dieser Befehl streamt die Logs aller Dienste, sodass Fehler oder Probleme sofort erkannt werden können. Um sich auf einen bestimmten Dienst zu konzentrieren, geben Sie dessen Namen an:
docker compose logs db
Zur Fehlersuche können Sie in einen laufenden Container wechseln mit:
docker compose exec app sh
Dieser Befehl öffnet eine Shell im app-Container, sodass Sie Dateien inspizieren, Diagnosebefehle ausführen oder Umgebungsvariablen prüfen können. Die Überwachung der Ressourcennutzung und des Container-Zustands ist ebenfalls mit den Standard-Docker-Tools wie docker stats möglich.
1. Welcher Schlüssel in einer docker-compose.yml-Datei stellt sicher, dass ein Service vor einem anderen startet?
2. Wie skalieren Sie einen Service namens worker mit Docker Compose auf fünf Instanzen?
3. Welchen Befehl würden Sie verwenden, um Live-Logs aller laufenden Services in einer Compose-Anwendung anzuzeigen?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen