Docker-updates op aanvraag, voor als Watchtower knippert
Mijn agent leren om Docker-stacks binnen het beleid te updaten — inclusief de from-source gebouwde stacks die geen image hebben om te pullen.
Ik wilde dat mijn containers up-to-date bleven zonder dat ik ze moest babysitten — maar op mijn voorwaarden, niet wat de registry vannacht toevallig uitbracht. Dus ging ik samenzitten met mijn agent, liet ik hem zien hoe ik de klus met de hand zou klaren, en goot ik dat in een herbruikbare skill.
Twee gaten die Watchtower openlaat
Watchtower pullt automatisch :latest volgens een schema. Handig — tot je beter kijkt. Het neemt geen back-ups, behandelt elke container hetzelfde, en wanneer de mailrelay verkeerd staat update het stilletjes, waarbij het apps vrolijk voorbij mijn “pin het en laat het rijpen”-beleid sleurt. Het begrijpt bovendien enkel registry-images.
En sommige van mijn containers hebben er geen. Mijn zelfgehoste time-tracker is from source gebouwd, dus docker compose pull slaat hem gewoon over — Watchtower kan er nooit aan komen.
Wat ik in de plaats bouwde
Een kleine skill die updatet zoals ik het zou doen: een preview van wat er echt zou veranderen, eerst de staat back-uppen (database-dump of volume-tar, op de dataschijf, niet op root), enkel opnieuw aanmaken wat veranderd is, de gezondheid verifiëren en een rollbackpunt bewaren. Het respecteert de regels die ik al volg — gepinde versies, minstens vier weken oud, databases enkel binnen hun major gepatcht.
Twee paden, één zorgvuldige procedure
Voor registry-images is het een gecontroleerde pull en recreate. Voor from-source gebouwde apps doet het wat een pull niet kan: de nieuwe release-tag ophalen, herbouwen en de migraties laten lopen — exact zoals de time-tracker netjes van 5.6 → 5.8 ging, database en al.
Automatisatie gaat niet over de mens wegnemen. Het gaat erover het zorgvuldige pad het gemakkelijke pad te maken.
Het resultaat: updates die ik op aanvraag kan triggeren — een verstandige fallback voor wanneer Watchtower faalt of afdrijft, en een manier om de custom containers te updaten die om te beginnen nooit een image hadden om te pullen.