HOME LAB · SELFHOSTING · NETZWERK

Artikel-Info

Kurzfassung

Schwierigkeit: Mittel · Dauer: 45–60 Min · Ziel: Docker-Compose-Stacks reproduzierbar deployen, validieren und sicher zurückrollen. Kurzproblem…

Kategorie

,

Tags

Veröffentlicht

Zuletzt aktualisiert

Docker Compose Deployments robust machen: Struktur, Healthchecks, Rollback

Docker Compose Deployments robust machen: Struktur, Healthchecks, Rollback – Featured Image

Schwierigkeit: Mittel · Dauer: 45–60 Min · Ziel: Docker-Compose-Stacks reproduzierbar deployen, validieren und sicher zurückrollen.

Kurzproblem und Zielbild

Viele Compose-Setups funktionieren initial, brechen aber bei Updates oder Neustarts durch fehlende Checks und unsaubere Struktur. Ziel ist ein Ablauf, der auch unter Last stabil bleibt und im Fehlerfall schnell zurückgerollt werden kann.

Voraussetzungen

  • Debian/Ubuntu Host mit Docker + Compose Plugin
  • Sudo-Zugriff
  • Freie Volumes/Backups vor Änderungen

Schnellstart (funktionierende Basis)

mkdir -p ~/stacks/app && cd ~/stacks/app
nano compose.yml
docker compose pull
docker compose up -d
docker compose ps

Was macht das? Erzeugt einen reproduzierbaren Stack-Ordner, zieht Images und startet den Stack kontrolliert.

Schritt-für-Schritt Umsetzung

1) Struktur und Variablen trennen

mkdir -p ~/stacks/app/{config,data,backup}
cp compose.yml compose.yml.bak
nano .env

Erklärung: Trennung reduziert Fehler bei Upgrades und vereinfacht Restore.

2) Healthchecks definieren

services:
  app:
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      interval: 30s
      timeout: 5s
      retries: 5

3) Update-Fenster mit Validierung

docker compose pull
docker compose up -d --remove-orphans
docker compose ps
docker compose logs --tail=120

4) Rollback vorbereiten

cp compose.yml backup/compose-$(date +%F-%H%M).yml
# im Fehlerfall:
cp backup/compose-YYYY-MM-DD-HHMM.yml compose.yml
docker compose up -d

Validierung / Checks

docker compose ps
curl -fsS http://localhost:8080/health
journalctl -u docker -n 120 --no-pager

Troubleshooting

Healthcheck bleibt „unhealthy“

Ursache: Falscher Endpoint oder Startdauer zu kurz.

docker compose logs app --tail=200
# retries/timeout erhöhen

Update startet, Service nicht erreichbar

Ursache: Inkompatibles Image/Config.

docker compose down
cp backup/compose-*.yml compose.yml
docker compose up -d

Fazit

Mit sauberer Struktur, Healthchecks und Rollback-Plan werden Compose-Deployments deutlich robuster. Nächster Schritt: Monitoring für Containerzustände ergänzen.

Quellen

Teilen: X LinkedIn Reddit WhatsApp Telegram Mastodon

Nächstes Tutorial

Mach direkt weiter mit dem nächsten Setup-Guide oder schau dir unsere Kaufempfehlungen an.