Bestandsaufnahme statt Neuanfang

Ausgangslage

Auf meinem VPS liefen zwei WordPress-Sites hinter einem gemeinsamen nginx. Der Server war über Monate gewachsen, das Compose-File passte nicht mehr zu dem, was tatsächlich lief.

Der Auslöser war ein Ausfall: Ein Git-Commit hatte nginx-Konfigurationsdateien verschoben, die Zertifikate waren danach unbemerkt fünf Monate lang abgelaufen.

Zustand vor der Migration: ein nginx macht alles, zwei getrennte Datenbanken, Bind-Mounts statt Volumes Browser :80 / :443 VPS Docker Netzwerk: wpnet nginx Reverse Proxy für beide Sites WordPress odabas.ch WordPress waverider52.com :3306 :3306 MariaDB odabasdb, eigen MariaDB waveriderdb, eigen Bind-Mount: ./data/* Bind-Mount: ./data/* Container Bind-Mount auf den Host, kein Docker-Volume

So sah es vor der Migration aus.

Entscheidung

Bevor ich etwas umbaue, will ich wissen, was wirklich läuft. Ich rekonstruiere den Ist-Zustand aus den laufenden Containern und mache ihn zur Grundlage im Git-Repository.

Umsetzung

  • docker inspect liefert Images, Netzwerke, Volumes und Umgebungsvariablen jedes Containers.
  • Daraus entsteht ein neues docker-compose.yml, das ich gegen den Live-Zustand prüfe.
  • nginx-Konfiguration, Let’s-Encrypt-Erneuerung und ein Mail-Alarm über msmtp sind repariert, dazu ein Kernel-Update.

Erkenntnis

Infrastructure as Code beginnt mit einer ehrlichen Bestandsaufnahme. Ein Compose-File, das nicht dem Live-Zustand entspricht, ist schlimmer als keines.