::: info
Watchtower è un'applicazione che automatizza il processo di aggiornamento delle immagini Docker. Monitora i container in esecuzione e, se rileva che l'immagine di base è cambiata nel repository remoto, scarica la nuova versione e riavvia il container utilizzando esattamente le stesse opzioni di configurazione iniziali.
:::
Watchtower non richiede un database esterno o configurazioni complesse. Comunica direttamente con il demone Docker tramite il socket per leggere i metadati dei container attivi.
Utilizziamo una configurazione Docker Compose ottimizzata. In questo esempio, Watchtower scansionerà gli aggiornamenti ogni 24 ore (86400 secondi) e pulirà automaticamente le vecchie immagini per risparmiare spazio.
docker-compose.yamlservices:
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower-service
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
# Intervallo di controllo in secondi (24h)
- WATCHTOWER_POLL_INTERVAL=86400
# Rimuove le vecchie immagini dopo l'aggiornamento (fondamentale!)
- WATCHTOWER_CLEANUP=true
# Include solo i container che hanno l'etichetta specifica (Opzionale)
# - WATCHTOWER_LABEL_ENABLE=true
# Fuso orario per i log
- TZ=Europe/Rome
security_opt:
- no-new-privileges:true
In un ambiente di produzione, aggiornare tutto indiscriminatamente può essere rischioso (es. un database che richiede una migrazione manuale). Watchtower permette due approcci:
Watchtower aggiorna tutti i container. Per escludere un container critico (es. MariaDB), aggiungi questa etichetta al servizio nel suo file Compose:
labels:
- "com.centurylinklabs.watchtower.enable=false"
Configura Watchtower con WATCHTOWER_LABEL_ENABLE=true. In questo modo, solo i container che hanno esplicitamente l'etichetta seguente verranno aggiornati:
labels:
- "com.centurylinklabs.watchtower.enable=true"
Un Software Architect deve sapere cosa succede. Watchtower supporta notifiche via Slack, Discord, Telegram o Email.
Esempio Telegram:
environment:
- WATCHTOWER_NOTIFICATIONS=telegram
- WATCHTOWER_NOTIFICATION_TELEGRAM_TOKEN=tuo_token_bot
- WATCHTOWER_NOTIFICATION_TELEGRAM_CHAT_ID=tuo_id_chat
WATCHTOWER_CLEANUP=true è vitale. Senza di essa, ogni aggiornamento lascerebbe sul disco la vecchia immagine orfana (dangling), saturando velocemente lo storage del server Proxmox o del Mac Pro.WATCHTOWER_SCHEDULE con espressione Cron (es. 0 0 3 * * * per le 3 del mattino) invece del POLL_INTERVAL.Tags: #Docker #Automation #Watchtower #Maintenance #DevOps*