Howto: Container bei mittwald automatisch per Cron aktualisieren
Bei mittwald lassen sich Container unkompliziert betreiben. Wir nutzen das unter anderem für eigene Solr-Container oder n8n.
Da Container-Images regelmäßig neue Features und vor allem Sicherheitsupdates erhalten, müssen sie kontinuierlich aktualisiert werden.
Wir betreiben unsere Container bewusst mit dem Tag :latest. Im mittwald-Backend kann das Image damit per Klick aktualisiert werden. Bei mehreren Projekten und Containern ist das allerdings weder effizient noch skalierbar.
Deshalb haben wir ein kleines Cron-Skript gebaut, das Container automatisch aktualisiert.
Voraussetzungen
Für die automatische Aktualisierung benötigen wir ein separates Projekt, in dem der Cronjob läuft:
- Static-Site-Projekt anlegen (dient nur als Laufzeitumgebung)
- Node.js als Software installieren
- Per SSH einloggen
- mittwald CLI installieren:
npm install -g @mittwald/cli - API-Token mit Schreibrechten anlegen
- Token durch login speichern:
mw login token
Projekt- und Container-IDs ermitteln
Um gezielt Container zu aktualisieren, benötigen wir jeweils project-id und container-id. Diese lassen sich entweder im mittwald-Backend ablesen oder direkt über die CLI ermitteln:
mw project list
Anschließend pro Projekt die Container auflisten:
mw container ls --project-id <project-id>
Alternativ aus dem Backend gemäß der Screenshots ermitteln.
Container aktualisieren und neu starten
Das eigentliche Update eines Containers inklusive Neustart erfolgt mit folgendem Befehl:
mw container recreate <container-id> --pull --project-id <project-id>
--pull erzwingt das Ziehen des aktuellen Images
recreate sorgt für einen sauberen Neustart des Containers
Automatisierung per Cron
Für den Cronjob kapseln wir den Befehl in ein kleines Bash-Skript, z.B.:
#!/bin/sh
exec /files/.mwsoftware/node/bin/mw container recreate $1 --pull --project-id $2Dieses Skript kann dann im Cronjob parametriert aufgerufen werden. So lassen sich mehrere Container aus unterschiedlichen Projekten gezielt und automatisiert aktualisieren.
Hinweis aus der Praxis
Automatische Updates mit :latest sind praktisch, sollten aber bewusst eingesetzt werden. Insbesondere, sobald Software mit definierten und versionierten Schnittstellen - denkbar wäre z.B. eine PostgreSQL-Datenbank - zum Einsatz kommt, kann man nicht davon ausgehen, immer auf die allerneueste Version wechseln zu können.
Außerdem muss man den Zeitpunkt des Updates über das Timing des Cronjobs sinnvoll wählen.
Wir nutzen dieses Setup für interne Tools und Services, bei denen ein kurzer Neustart akzeptabel ist.
Übrigens
Systeme die wir außerhalb von Mittwald betreiben, aktualisieren wir mit WUD (aka What’s up Docker).
Wir freuen uns, wenn Ihr diesen Beitrag teilt.






Kommentare
Keine Kommentare gefunden.