Seite 1 von 1

Watchtower: Docker container automatisiert aktualisieren

Verfasst: Sa 23. Sep 2023, 10:08
von pekabo
Hi @ all,

Watchtower ist ein Docker-Tool, das automatisch Container-Images in einem Docker-Host überwacht und aktualisiert. Es erkennt, wenn neue Versionen der zugrunde liegenden Docker-Images verfügbar sind, Lädt sie herunter und startet Container neu, um sicherzustellen, dass die neuesten Softwareupdates angewendet werden, ohne manuellen Eingriff. Dies erleichtert die Aktualisierung und Wartung von Docker-Anwendungen erheblich und trägt zur Sicherheit und Stabilität von Container-Umgebungen bei.

Seit 6 Monaten problemlos im produktiven Einsatz, wurden bereits 25 verschiedene Images erfolgreich aktualisiert.

Anbei das Docker-Compose Template

Code: Alles auswählen

  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    restart: unless-stopped
    environment:
      WATCHTOWER_SCHEDULE: "0 0 1 * * *"
      TZ: "Europe/Berlin"
      WATCHTOWER_NOTIFICATIONS: "email"
      WATCHTOWER_NOTIFICATION_EMAIL_FROM: "Watchtower@domain.tld"
      WATCHTOWER_NOTIFICATION_EMAIL_TO: "Name@domain.tld"
      WATCHTOWER_NOTIFICATION_EMAIL_SUBJECTTAG: "Watchtower on ei23"
      WATCHTOWER_NOTIFICATION_EMAIL_SERVER: "smtp.domain.tld"
      WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT: "587"
      WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER: "smtp_user"
      # Info: Wenn ein Container über Docker compose erstellt wird, muss dem $ Zeichen ein weiteres $ Zeichen vorausgehen, es wird somit escaped.
      WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD: "DeinPasswort"
      WATCHTOWER_NOTIFICATION_EMAIL_DELAY: 2
      # Info: Die folgende Einstellung löscht images, die nicht mehr verwendet werden. 
	  WATCHTOWER_CLEANUP: true
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
In meiner Umgebung war nur eine Anpassung am orginal Grafana Docker-Compose-Template erforderlich. Ich habe Grafana erlaubt, Charts per iFrame in Node Red einzubetten, indem ich die grafana.ini wie folgt angepasst habe:

Code: Alles auswählen

allow_embedding: true
cookie_samesite: none
Beim Aktualisieren von Grafana wurde die grafana.ini jedoch überschrieben, daher war es notwendig, diese außerhalb des Images zu speichern. Dies wurde dem orginal Docker-Compose-Template für Grafana hinzugefügt:

Code: Alles auswählen

volumes:
  - ./volumes/grafana/config/:/etc/grafana/
Dadurch wurde sichergestellt, dass die Datei grafana.ini außerhalb des Containers geladen wird.

Gruß
pekabo

Re: Watchtower: Docker container automatisiert aktualisieren

Verfasst: Mo 2. Okt 2023, 21:21
von ei23felix
Danke für deinen Beitrag!
Die Funktion bietet das Skript auch:
Du machst einen cronjob mit sudo crontab -e oder einen zeitgesteuerten exec node in nodered, der

Code: Alles auswählen

ei23 du

ausführt.
Tut das selbe.
Alternativ:

Code: Alles auswählen

ei23 fullupdate
dann gibts auch direkt die updates für das host-system.

Allerdings sollte man sich über breaking Changes im Klaren sein. Die kommen bei Home Assistant beispielsweise recht häufig vor.
Daher mache ich Updates gerne manuell und dann, wenn ich ein bisschen Zeit für anschließeden Anpassungen habe.