Eine Möglichkeit, laufende Container aktuell zu halten, sind Trigger aus dem Docker-Hub. Diese werden dann immer gefeuert, wenn das zugrundeliegende Image im Docker-Hub aktualisiert wurde.
Leider kann man seit einigen Monaten (?) offenbar nur noch bei eigenen Docker-Hub-Repos Trigger setzen. Um trotzdem Trigger von fremden Repos bei Aktualisierungen zu bekommen, benutze ich folgenden Workaround (am Beispiel wordpress):
- github-Repo mit nur einem Dockerfile, welches nur
FROM wordpress
enthält. Also ein 1:1-Clone. (siehe https://github.com/dsteinkopf/wordpress) - docker-Hub-Repo: „Create Automated Build“ mit Verweis auf das github-Repo einrichten. (siehe https://hub.docker.com/r/dsteinkopf/wordpress/)
- Bei „Build Settings“ kann man dann unter „Repository Links“ das Ursprungs-Repo eintragen, was dazu führt, dass unser Repo immer neu gebaut wird, wenn das Ursprungs-Repo geändert wurde.
- jetzt kann man unter „Webhooks“ einen in Tutum eingerichteten Redeploy-Trigger eintragen.
- Fertig: Bei Änderungen den ursprünglichen wordpress-Repo wird über den Umweg mein Trigger ausgelöst und mein Container aktualisiert.
Positiver Nebeneffekt für Bastler: Kleine Änderungen am Dockerfile sind dann auch schnell gemacht, weil die Build-Infraktur dann schon steht. (Das habe ich z.B. bei https://hub.docker.com/r/dsteinkopf/confluence-dup/ genutzt, um einen kleinen Confluence-Patch zu installieren.)
zu häufiges Redeploy: siehe https://nerdblog.steinkopf.net/2016/01/geordneter-redeploy-von-dockertutum-containern/
Docker Cloud hat jetzt das Feature „auto redeploy“. Dieses sollte dazu führen, dass jede Änderung im zugrundeliegenden Repository (Image) bewirkt, dass der Service (Container) redeployt (neu gestartet) wird. (siehe hier)