Blue-Green Deployments sind eine bewährte Methode, um neue Versionen einer Anwendung ohne Ausfallzeiten einzuführen. Dabei existieren zwei identische Umgebungen: die aktive („Blue“) und die inaktive („Green“). Neue Versionen werden zunächst in der inaktiven Umgebung bereitgestellt, getestet und anschließend durch Umschalten des Traffics live geschaltet. In diesem Tutorial lernen Sie, wie Blue-Green Deployments mit Docker Compose umgesetzt werden können, um Rollouts sicher und ausfallsicher durchzuführen.
Grundprinzipien eines Blue-Green Deployments
Die Kernidee besteht darin, die Produktion durch zwei identische Umgebungen zu teilen:
- Blue: Aktive Version, die aktuell den Traffic bedient
- Green: Neue Version, die parallel vorbereitet und getestet wird
- Nach erfolgreichen Tests wird der Traffic auf Green umgeleitet
- Blue bleibt als Rollback-Option bestehen
Vorbereitung der Docker Compose Umgebungen
Für ein Blue-Green Deployment benötigen Sie zwei separate Compose-Stacks, die jeweils eigene Container und Netzwerke verwenden:
version: "3.9"
services:
web:
image: myorg/web:1.0.0
networks:
- frontend
ports:
- "8080:80"
networks:
frontend:
Für das Green-Deployment wird ein zweites Compose-File angelegt, z. B. docker-compose.green.yml, das neue Versionen referenziert:
version: "3.9"
services:
web:
image: myorg/web:1.1.0
networks:
- frontend
ports:
- "8081:80"
networks:
frontend:
- Blue bedient Traffic über Port 8080
- Green ist isoliert und kann parallel getestet werden (Port 8081)
- Netzwerke und Volumes sind getrennt, um Interferenzen zu vermeiden
Testing der Green-Umgebung
Bevor die neue Version live geschaltet wird, sollte sie vollständig getestet werden:
- Funktions- und Integrationstests durchführen
- Healthchecks sicherstellen, dass Services korrekt starten
- Logs prüfen, um Fehler frühzeitig zu erkennen
docker-compose -f docker-compose.green.yml up -d
curl http://localhost:8081/health
Umschalten des Traffics
Nach erfolgreichem Test wird der Traffic auf die Green-Umgebung umgeleitet. Dies kann durch einen Reverse Proxy oder Load Balancer erfolgen:
version: "3.9"
services:
proxy:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
networks:
- frontend
web_blue:
image: myorg/web:1.0.0
networks:
- frontend
web_green:
image: myorg/web:1.1.0
networks:
- frontend
networks:
frontend:
Die nginx.conf kann den aktiven Backend-Server per Upstream ändern:
upstream backend {
server web_green:80;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
Rollback bei Problemen
Ein großer Vorteil von Blue-Green Deployments ist das einfache Zurückschalten auf die alte Version:
- Traffic einfach wieder auf Blue umleiten
- Keine Änderungen an Datenbanken oder Volumes nötig, falls kompatibel
- Schnelle Wiederherstellung bei Fehlern
Rollback Beispiel
upstream backend {
server web_blue:80;
}
Best Practices für Blue-Green Deployments mit Docker Compose
- Getrennte Netzwerke und Volumes für Blue und Green
- Versionierte Images verwenden, niemals
latest - Healthchecks und Logging für beide Umgebungen aktivieren
- Reverse Proxy oder Load Balancer für Traffic-Steuerung nutzen
- Automatisierte Tests vor Umschaltung durchführen
- Rollback-Mechanismen immer planen
- Minimal notwendige Ports nach außen öffnen
Monitoring und Kontrolle
Während des Deployments sollten Logs und Healthchecks überwacht werden:
docker-compose -f docker-compose.green.yml logs -f
docker ps --filter "name=web_green"
curl http://localhost:8081/health
- Überwachung hilft, Fehler sofort zu erkennen
- Logs zeigen, ob neue Container korrekt starten
- Healthchecks verhindern das Umschalten auf fehlerhafte Versionen
Zusammenfassung
Blue-Green Deployments mit Docker Compose ermöglichen Rollouts ohne Ausfallzeiten. Durch parallele Umgebungen, Healthchecks, Reverse Proxy Steuerung und Versionierung können neue Container sicher eingeführt und im Fehlerfall schnell zurückgesetzt werden. Best Practices wie getrennte Netzwerke, Logging, Monitoring und automatisierte Tests minimieren Risiken und sorgen für stabile und wartbare Produktionsumgebungen.
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.











