Watchtower : un conteneur pour les gouverner tous

Docker est un outil incroyable qui permet de déployer facilement tout un tas de solutions logicielles. Grâce à lui, pas besoin de vous soucier de l’OS, de sa version, et des risques d’une mauvaise installation à cause des différentes opérations manuelles à effectuer, le tout étant déjà préparé dans les images que vous déployez.
De plus, lorsque vous êtes amené à mettre vos applications à jour, vous pouviez être confronté à effectuer des opérations fastidieuses. Grâce à Docker, il suffit de récupérer la dernière version d’une image et le tour est joué.
Mais… Imaginez qu’il soit possible de ne plus avoir à vous préoccuper même de ces opérations de mise à jour d’image, afin d’avoir automatiquement vos conteneurs à jour. C’est là que Watchtower intervient.
Fonctionnalités
Watchtower est un outil capable de vérifier les images actuellement utilisées sur votre instance Docker. En fonction de la façon dont vous le configurez, il peut soit vous notifier que des nouvelles versions d’image sont disponibles, soit les mettre à jour automatiquement, en choisissant une fréquence de vérification, ou une date et heure précise.
C’est cette seconde méthode que je vais vous proposer de mettre en place, afin de redémarrer automatiquement sur la dernière version vos conteneurs à une heure désirée.
Installation
Pour installer Watchtower, comme d’habitude, on commence par un fichier docker-compose.yml
:
services:
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
hostname: watchtower
privileged: true
env_file: watchtower.env
volumes:
- /var/run/docker.sock:/var/run/docker.sock
restart: always
Et son fichier watchtower.env
:
TZ=Europe/Paris
WATCHTOWER_SCHEDULE=0 0 6 * * *
WATCHTOWER_LABEL_ENABLE=false
WATCHTOWER_CLEANUP=true
WATCHTOWER_REMOVE_VOLUMES=true
#WATCHTOWER_DISABLE_CONTAINERS=
Petit tour des variables que j’utilise :
WATCHTOWER_SCHEDULE
: permet de définir le moment du check à la manière de cron. Tous les jours à 6h dans notre exempleWATCHTOWER_LABEL_ENABLE
: il est par défaut nécessaire d’indiquer dans chaque fichierdocker-compose.yml
si le conteneur doit être vérifié. Désactivé dans notre cas pour plus de simplicitéWATCHTOWER_CLEANUP
: nettoie ou non les anciennes images une fois la mise à jour effectuéeWATCHTOWER_REMOVE_VOLUMES
: supprime les volumes qui ne sont pas nommésWATCHTOWER_DISABLE_CONTAINERS
: permet lister les conteneurs à exclure de la vérification (séparé par des espaces)
Si vous avez besoin de précisions sur ces paramètres, les infos se trouvent principalement ici.
Petite capture des logs d’une instance en place, avec deux exemples d’images mises à jour :
