Watchtower als Monitoring-Tool - nur benachrichtigen statt automatisch updaten

Watchtower als Monitoring-Tool - nur benachrichtigen statt automatisch updaten

Watchtower kann prüfen, ob neue Image-Versionen verfügbar sind, und eine Benachrichtigung senden — ohne einen einzigen Container anzufassen.

Das Problem mit Auto-Updates in der Produktion

Automatische Container-Updates klingen praktisch, sind in Produktionsumgebungen aber riskant: Ein neues Image kann Breaking Changes enthalten, die den Dienst unbrauchbar machen. Wer benachrichtigt werden möchte, aber selbst entscheiden will, wann und ob er updatet, nutzt den Monitor-Modus.

Monitor-only Modus

services:
  watchtower:
    image: containrrr/watchtower
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      WATCHTOWER_MONITOR_ONLY: "true"
      WATCHTOWER_SCHEDULE: "0 0 4 * * *"   # täglich um 4 Uhr
      WATCHTOWER_NOTIFICATIONS: gotify
      WATCHTOWER_NOTIFICATION_GOTIFY_URL: http://gotify:80
      WATCHTOWER_NOTIFICATION_GOTIFY_TOKEN: mytoken

Mit WATCHTOWER_MONITOR_ONLY=true prüft Watchtower, welche Container aktualisiert werden könnten, und sendet eine Benachrichtigung — führt das Update aber nicht durch.

Per Container steuern

Das globale Monitor-Flag lässt sich pro Container überschreiben:

services:
  # Dieser Container wird nie automatisch aktualisiert
  database:
    image: postgres:15
    labels:
      - "com.centurylinklabs.watchtower.monitor-only=true"

  # Dieser Container darf auto-updaten (wenn Watchtower global im Update-Modus ist)
  blog:
    image: ghost:latest
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

Benachrichtigungskanäle

Watchtower unterstützt mehrere Kanäle über die Shoutrrr-Bibliothek:

environment:
  # E-Mail
  WATCHTOWER_NOTIFICATIONS: email
  WATCHTOWER_NOTIFICATION_EMAIL_FROM: watchtower@example.com
  WATCHTOWER_NOTIFICATION_EMAIL_TO: admin@example.com
  WATCHTOWER_NOTIFICATION_EMAIL_SERVER: smtp.example.com

  # Slack
  WATCHTOWER_NOTIFICATIONS: slack
  WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL: https://hooks.slack.com/...

  # Gotify (Self-hosted)
  WATCHTOWER_NOTIFICATIONS: gotify
  WATCHTOWER_NOTIFICATION_GOTIFY_URL: http://gotify:80
  WATCHTOWER_NOTIFICATION_GOTIFY_TOKEN: mytoken

Zeitplan konfigurieren

Das WATCHTOWER_SCHEDULE-Format ist ein 6-stelliger Cron-Ausdruck:

0 0 4 * * *    → täglich um 04:00 Uhr
0 0 */6 * * *  → alle 6 Stunden
0 30 8 * * 1   → montags um 08:30 Uhr

Alternativ als Intervall:

WATCHTOWER_POLL_INTERVAL: "86400"   # Sekunden (= 24 Stunden)

Einmalig prüfen (ohne dauerlaufenden Container)

docker run --rm \
  -v /var/run/docker.sock:/var/run/docker.sock \
  containrrr/watchtower \
  --monitor-only \
  --run-once

Führt eine einmalige Prüfung durch und gibt die Ergebnisse auf stdout aus — nützlich für Skripte.

Zusammenfassung

Watchtower im Monitor-Modus ist ein sicherer Weg, immer über verfügbare Updates informiert zu sein, ohne das Risiko eines unkontrollierten automatischen Updates. Besonders für Produktionssysteme und Datenbank-Container ist der Monitor-Modus die richtige Wahl — Updates manuell einspielen, wenn der Zeitpunkt passt.