Automatiser les mises à jour de vos conteneurs Docker avec Watchtower
Comprendre comment Watchtower détecte et met à jour automatiquement vos conteneurs quand de nouvelles images sont publiées.
Pourquoi Watchtower ?
Mettre à jour un conteneur à chaque git push peut devenir pénible. Watchtower tourne en tâche de fond, compare le digest de l’image locale avec celui du registre, pull si nécessaire, puis recrée le conteneur avec l’image la plus récente.
Ce que Watchtower fait concrètement
- Liste les conteneurs en cours d’exécution
- Résout l’image (ex.
ghcr.io/user/app:main) - Compare le digest local vs distant
- Si différent →
docker pull+ stop/remove/create du conteneur
Important : Watchtower ne build pas vos images. Il se contente de consommer ce que votre CI a publié sur un registre (Docker Hub, GHCR, etc.).
Installation basique (images publiques)
Lancement rapide :
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower --interval 300 --cleanup
-
interval 300 : vérifie toutes les 5 minutes
-
cleanup : supprime les anciennes images après mise à jour
Utilisation avec Docker Compose
Exemple minimal :
services:
watchtower:
image: containrrr/watchtower
command: --interval 300 --cleanup
volumes:
- /var/run/docker.sock:/var/run/docker.sock
restart: unless-stopped
Limites à connaître
Avec des images privées (ex. GHCR privé), il faut fournir des identifiants au conteneur Watchtower (voir l’article 2).
Watchtower suit par défaut tous les conteneurs. On peut restreindre la portée via des labels (article 2).