Beschreibung:
Beim Deployment eines neuen Image-Tags via mw stack up meldet der Stack Erfolg, aber die Container werden nicht neu gestartet — der alte Code bleibt aktiv. Ein anschließendes mw container restart schlägt mit einem 412-Fehler fehl.
Umgebung:
- @mittwald/cli Version: 1.15.x
- Deployment via GitLab CI
Schritte zur Reproduktion:
- Neues Docker-Image mit neuem Tag bauen (z.B. phpfpm-staging-abc1234)
- Deployment via
mw stack up -c docker-compose.yml -s <stack-id> --env-file .env
- Direkt danach
mw container restart <container-id> --project-id <project-id> aufrufen
Beobachtetes Verhalten:
Schritt 2 gibt zurück:
Deployment successful. No services were restarted. No services were deleted.
Schritt 3 schlägt fehl mit:
Response 412 Precondition Failed
Message cannot start service <id>, it is already starting
Auch mit einem sleep 5 zwischen Schritt 2 und 3 bleibt der 412-Fehler bestehen.
Erwartetes Verhalten:
Entweder:
- mw stack up sollte betroffene Container neu starten, wenn sich der Image-Tag ändert,
oder
- mw container restart sollte nach Abschluss von mw stack up erfolgreich ausführbar sein
Auswirkung:
Nach einem Deployment mit neuem Image-Tag laufen die Container weiterhin mit dem alten Image. Der neue Code wird nicht übernommen, weil der OPcache von PHP-FPM den alten Bytecode im Speicher hält. Ein Container-Neustart ist der einfachste und zuverlässigste Weg, den OPcache zu leeren und das neue Image zu aktivieren. Dies lässt sich aktuell über die CLI nicht zuverlässig automatisieren.
Workaround:
Ein manueller Neustart über das mStudio funktioniert, macht aber automatisierte CI/CD-Deployments zunichte.
Beschreibung:
Beim Deployment eines neuen Image-Tags via mw stack up meldet der Stack Erfolg, aber die Container werden nicht neu gestartet — der alte Code bleibt aktiv. Ein anschließendes mw container restart schlägt mit einem 412-Fehler fehl.
Umgebung:
Schritte zur Reproduktion:
mw stack up -c docker-compose.yml -s <stack-id> --env-file .envmw container restart <container-id> --project-id <project-id>aufrufenBeobachtetes Verhalten:
Schritt 2 gibt zurück:
Deployment successful. No services were restarted. No services were deleted.Schritt 3 schlägt fehl mit:
Auch mit einem sleep 5 zwischen Schritt 2 und 3 bleibt der 412-Fehler bestehen.
Erwartetes Verhalten:
Entweder:
oder
Auswirkung:
Nach einem Deployment mit neuem Image-Tag laufen die Container weiterhin mit dem alten Image. Der neue Code wird nicht übernommen, weil der OPcache von PHP-FPM den alten Bytecode im Speicher hält. Ein Container-Neustart ist der einfachste und zuverlässigste Weg, den OPcache zu leeren und das neue Image zu aktivieren. Dies lässt sich aktuell über die CLI nicht zuverlässig automatisieren.
Workaround:
Ein manueller Neustart über das mStudio funktioniert, macht aber automatisierte CI/CD-Deployments zunichte.