Healthchecks in Docker Compose sind ein wesentliches Werkzeug, um die Zuverlässigkeit und Stabilität von containerisierten Diensten zu gewährleisten. Sie ermöglichen es, den Status eines Containers regelmäßig zu überprüfen und sicherzustellen, dass nur gesunde Dienste Traffic erhalten oder abhängige Services starten. Dieses Tutorial erklärt praxisnah, wie Healthchecks definiert, konfiguriert und sinnvoll in Microservices- oder Multi-Container-Umgebungen eingesetzt werden.
Grundlagen von Healthchecks
Ein Healthcheck überprüft, ob ein Container ordnungsgemäß funktioniert. Docker nutzt diese Information, um den Status des Containers als healthy, unhealthy oder starting zu markieren. Abhängige Container können auf diesen Status reagieren, um z. B. nur dann zu starten, wenn ein Service verfügbar ist.
Parameter eines Healthchecks
Healthchecks in Docker Compose können mit folgenden Parametern definiert werden:
- test: Der Befehl oder das Skript, das die Überprüfung durchführt
- interval: Zeit zwischen zwei Prüfungen
- timeout: Maximale Zeit, die ein Test dauern darf
- retries: Anzahl fehlgeschlagener Versuche, bevor ein Container als
unhealthygilt - start_period: Zeit, die Docker nach Containerstart wartet, bevor Healthchecks beginnen
Beispiel: Healthcheck für eine PostgreSQL-Datenbank
services:
db:
image: postgres:16
container_name: db
environment:
POSTGRES_USER: appuser
POSTGRES_PASSWORD: securepassword
POSTGRES_DB: appdb
healthcheck:
test: ["CMD-SHELL", "pg_isready -U appuser"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
volumes:
- db_data:/var/lib/postgresql/data
- test: Prüft, ob die Datenbank Verbindungen akzeptiert
- interval: Alle 10 Sekunden
- timeout: 5 Sekunden pro Test
- retries: 5 fehlgeschlagene Tests markieren den Container als
unhealthy - start_period: Verzögerung von 10 Sekunden nach Containerstart
Healthcheck für Webservices
Für HTTP-basierte Services können einfache curl-Aufrufe genutzt werden, um Endpunkte zu prüfen.
services:
api:
image: myorg/api-service:latest
container_name: api
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 15s
timeout: 5s
retries: 3
- Der
/health-Endpoint liefert 200 OK, wenn der Service gesund ist - Docker markiert den Container nur als
healthy, wenn der Test erfolgreich ist
Healthchecks für Abhängigkeiten mit depends_on
Docker Compose kann abhängig von Healthchecks anderer Services starten. So wird sichergestellt, dass ein Service erst startet, wenn alle Abhängigkeiten verfügbar sind.
services:
frontend:
image: myorg/frontend-service:latest
depends_on:
db:
condition: service_healthy
api:
condition: service_healthy
- Der
frontend-Service startet erst, wenndbundapialshealthymarkiert sind - Verhindert Fehler durch nicht erreichbare Abhängigkeiten
Healthchecks für Caches wie Redis
services:
redis:
image: redis:8
container_name: redis
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
volumes:
- cache_data:/data
- redis-cli ping liefert
PONG, wenn der Container gesund ist - Healthcheck verhindert, dass abhängige Services auf einen nicht funktionsfähigen Cache zugreifen
Praktische Tipps für Healthchecks
- Endpoints oder Services prüfen, die kritisch für die Anwendung sind
- Timeouts nicht zu kurz setzen, um falsche
unhealthy-Status zu vermeiden - Startperiod nutzen, um Containern Zeit zum Hochfahren zu geben
- Alle Services versionieren, um Rollbacks zu erleichtern
- Monitoring kombinieren: Docker Healthchecks + externes Monitoring für höhere Zuverlässigkeit
Stack starten und Healthchecks überwachen
Stack starten:
docker-compose up -d
Healthstatus der Container prüfen:
docker ps
docker inspect --format='{{json .State.Health}}' db
docker inspect --format='{{json .State.Health}}' api
Logs der Healthchecks einsehen:
docker-compose logs -f db
docker-compose logs -f api
Updatefähigkeit und Rollbacks
Durch Healthchecks können Updates sicher durchgeführt werden. Container werden nur als bereit markiert, wenn alle Healthchecks erfolgreich sind, was ein kontrolliertes Rollout ermöglicht.
docker-compose pull
docker-compose up -d
Zusammenfassung
Healthchecks in Docker Compose sind essenziell, um die Zuverlässigkeit von containerisierten Diensten zu erhöhen. Sie sichern den Start von abhängigen Services, überwachen kritische Endpunkte und erleichtern Updates und Rollbacks. Kombiniert mit persistenter Speicherung, Netzwerken und Monitoring tragen Healthchecks entscheidend zu stabilen Microservices- oder Multi-Container-Umgebungen bei.
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.











