Passer au contenu principal

Watchtower

Outil qui surveille automatiquement vos conteneurs Docker et, si nécessaire, peut les mettre à jour pour garantir qu'ils disposent toujours de la dernière version. Il facilite la gestion de vos applications en s'assurant qu'elles restent à jour sans intervention manuelle.

Précautions avant la mise à jour automatique

Je vous recommande vivement de ne pas activer la mise à jour automatique sans une étape préalable d’analyse.automatique. Il est important de relire les notes de version avant de procéder à une mise à jour, afin de suivre les changements et d’éviter tout problème ou incompatibilité qui pourrait casser votre environnement.

Fonctionnement de Watchtower

  • Surveille automatiquement vos conteneurs Docker.
  • Si une mise à jour est disponible, il peut, selon la configuration, la télécharger et l’appliquer.
  • Peut envoyer des notifications pour vous tenir informé des actions effectuées ou en cours.

Note : Il est conseillé de configurer Watchtower en mode surveillance ONLY (WATCHTOWER_MONITOR_ONLY: "true") si vous souhaitez d’abord recevoir des notifications sans qu’il procède automatiquement à la mise à jour.

Configuration de Webhook pour notifications

Pour recevoir des notifications dans votre serveur Discord lorsque Watchtower effectue une action (mise à jour, erreur, etc.), vous pouvez utiliser la fonction de webhook de Discord.

Comment créer un webhook Discord ?

  1. Ouvrez Discord et allez dans le serveur où vous souhaitez recevoir les notifications.
  2. Sélectionnez le canal où vous souhaitez envoyer les messages (ex : #watchtower).
  3. Cliquez sur la petite roue dentée à côté du nom du canal pour ouvrir ses paramètres.
  4. Dans le menu de gauche, cliquez sur Intégrations puis sur Webhooks.
  5. Cliquez sur Créer un webhook.
  6. Personnalisez le nom du webhook, choisissez une image si vous le souhaitez, puis cliquez sur Copier le webhook URL.
  7. Conservez cette URL, vous en aurez besoin pour la configuration.

Intégrer le webhook dans votre configuration Watchtower

  • Pour recevoir des notifications dans votre serveur Discord, vous devez utiliser la variable d’environnement WATCHTOWER_NOTIFICATION_URL dans votre fichier de configuration Docker compose ou dans vos variables d’environnement.
  • Remplacez la valeur "discord://token@id" par les valeurs de l'URL votre webhook Discord :
    https://discord.com/api/webhooks/ID/TOKEN
    
  • Exemple de configuration :
environment:
  WATCHTOWER_NOTIFICATION_URL: "discord://M8q5hBYCHqwFTD3R838KIbb-CIWhGNTPLtHM1wd9S3vlqEIuZGmlNT78Pnur04p46aVq@1416880135902335086"

Exemple modifié :

services:
  watchtower:                                         # Permet de mettre à jour automatiquement 
    image: containrrr/watchtower:latest
    container_name: watchtower                        # Nom du conteneur
    restart: unless-stopped                           # Redémarre automatiquement sauf si arrêté manuellement
    environment:
      TZ: Europe/Paris                                # Fuseau horaire
      WATCHTOWER_NOTIFICATIONS_HOSTNAME: "nom"        # Nom d'hôte
#      WATCHTOWER_INCLUDE: "nginx-proxy portainer"     # Liste des conteneurs à surveiller (séparés par des espaces)
      WATCHTOWER_SCHEDULE: "0 0 12 * * *"             # Vérification tous les jours à midi
      WATCHTOWER_MONITOR_ONLY: "true"                 # Mode surveillance uniquement : détecte les mises à jour mais ne les applique pas
      WATCHTOWER_CLEANUP: "true"                      # Supprime automatiquement les anciennes images après mise à jour
      WATCHTOWER_INCLUDE_RESTARTING: "false"          # Inclut les conteneurs en cours de redémarrage dans la surveillance
                                                      # URL de notification Discord (webhook)
      WATCHTOWER_NOTIFICATION_URL: "discord://token@id"
      WATCHTOWER_NOTIFICATION_TEMPLATE: |
        {{range .}}{{.Time.Format "01-02-2006 15:04:05"}} ({{.Level}}): {{.Message}}{{println}}{{end}}
      WATCHTOWER_NOTIFICATIONS: shoutrrr
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

Remarques importantes :