Blue-Green Deployment mit Docker Compose: Rollouts ohne Ausfall

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.

Related Articles