Auf meinem kleinen Ubuntu Server zu Hause tummeln sich ca. 30 Docker Container. Bisher habe ich mich via Docker-Update-Image-Notififier (DIUN) über Updates benachrichtigen lassen, wenn es neue Version der genutzten Images gab. Das Update hab ich dann aber trotzdem noch selbst gemacht bzw. machen müssen. Die Benachrichtung via eMail ist ganz ansprechend und die ganze Geschichte lässt sich sich schön individuell konfigurieren, ja nachdem, wie man es braucht.
Hier mal das dazugehörige docker-compose.yml:
version: "3.5"
services:
diun:
container_name: diun
image: crazymax/diun:latest
volumes:
- "./data:/data"
- "./diun.yml:/diun.yml:ro"
- "/var/run/docker.sock:/var/run/docker.sock"
environment:
- "TZ=Europe/Berlin"
- "LOG_LEVEL=info"
- "LOG_JSON=false"
restart: unless-stopped
Und noch die diun.yml dazu:
watch:
workers: 20
schedule: "30 2 * * *"
firstCheckNotif: true
providers:
docker:
watchByDefault: true
notif:
mail:
host: smtp.my-email-provider.de
port: 465
ssl: true
insecureSkipVerify: true
from: [email protected]
to: [email protected]
username: blablabla
password: blablubb123
Die Benachrichtigung sieht dann in etwa so aus:
![](https://www.denniswilmsmann.de//wp-content/uploads/2021/04/grafik.png)
Soweit, so gut. Heute habe ich dann zufällig Watchtower entdeckt. Da sehen die Benachrichtigungen zwar nicht so schön aus, aber dafür können automatische Updates gemacht werden, wenn neue Versionen der Images vorliegen.
Auch hier wieder eine komplette docker-compose.yml, inkl. eMail Relay via Postfix:
version: "3.5"
services:
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
restart: unless-stopped
depends_on:
- postfix
environment:
TZ: 'Europe/Berlin'
WATCHTOWER_MONITOR_ONLY: 'false'
WATCHTOWER_CLEANUP: 'true'
WATCHTOWER_SCHEDULE: '0 15 5 * * *'
WATCHTOWER_HTTP_API_METRICS: 'true'
WATCHTOWER_HTTP_API_TOKEN: no5theit0dooqueih2ohjoo7ya6Tai7a
WATCHTOWER_NOTIFICATIONS: email
WATCHTOWER_NOTIFICATION_EMAIL_FROM: [email protected]
WATCHTOWER_NOTIFICATION_EMAIL_TO: [email protected]
WATCHTOWER_NOTIFICATION_EMAIL_SERVER: postfix
WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT: 25
WATCHTOWER_NOTIFICATION_EMAIL_DELAY: 5
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 9180:8080
postfix:
image: juanluisbaptiste/postfix:latest
container_name: postfix
restart: unless-stopped
environment:
TZ: 'Europe/Berlin'
SMTP_SERVER: smtp.my-email-provider.de
SMTP_PORT: 25
SMTP_USERNAME: blablabla
SMTP_PASSWORD: blablubb123
SERVER_HOSTNAME: my-dockerhost
Die bereitgestellten Metriken greift mein Prometheus ab:
- job_name: 'watchtower'
scrape_interval: 5s
metrics_path: /v1/metrics
bearer_token: no5theit0dooqueih2ohjoo7ya6Tai7a
static_configs:
- targets: ['192.168.1.130:9180']
Wenn bestimmt Images nicht aktualisiert werden sollen, was z.B. bei auf dem System selbst gebauten Images der Fall ist, kann das mit diesem Label verhindert werden:
version: '3.3'
services:
my-app:
ports:
- '8080:8080'
container_name: my-app
image: 'my-app:latest'
restart: unless-stopped
volumes:
- './log:/app/log'
labels:
- com.centurylinklabs.watchtower.enable=false