Der Cutover in 0,9 Sekunden
Ausgangslage
odabas.ch lief noch als WordPress hinter einem eigenen nginx-Container, der TLS selbst terminiert, während Traefik nur unverschlüsselt durchreicht. Die neue statische Astro-Seite war fertig, und eine Pipeline baute daraus bereits ein Image, mit ausgeschaltetem Deploy-Schritt.
Entscheidung
Statt eines neuen Containers habe ich den bestehenden nginx-Container wiederverwendet. Name, Ports, Traefik-Labels und Zertifikats-Mounts bleiben gleich, nur das Image und ein location-Block ändern sich, so bleibt die abgesicherte Zertifikatserneuerung unberührt.
Umsetzung
Weil der alte Testweg nicht mehr existierte, habe ich für den Vorabtest einen temporären Traefik-Entrypoint angelegt und danach wieder entfernt. Beim Umschalten habe ich in der nginx-Konfiguration location / von proxy_pass auf root /usr/share/nginx/html mit try_files umgestellt und in der Compose-Datei die image:-Zeile von nginx:latest auf das selbstgebaute Image gewechselt; der Neustart dauerte 0,9 Sekunden. Den WordPress-Container habe ich gestoppt statt gelöscht und die alte Konfiguration vorher gesichert. Danach stellte ich den Deploy-Schritt der Pipeline scharf: Der erste Lauf, von Hand über «Run workflow» angestossen, dauerte 49 Sekunden und lieferte die Seite ohne Serverzugriff aus.
Erkenntnis
Ein Cutover wird klein, wenn alles darum herum gleich bleibt: Eine Zeile und ein Block haben sich geändert, Ports, Zertifikate und Routing nicht. Und weil WordPress und die alte Konfiguration erhalten blieben, stand der Rückweg jederzeit offen.