Nastavenie Watchtower na automatickú aktualizáciu Docker kontajnerov

Návod: Nastavenie Watchtower na automatickú aktualizáciu Docker kontajnerov

Watchtower je nástroj, ktorý zabezpečuje automatickú aktualizáciu Docker kontajnerov. Tento návod obsahuje dva varianty nastavenia docker-compose.yml súboru pre Watchtower: jeden pre automatickú aktualizáciu všetkých Docker kontajnerov a druhý pre aktualizáciu iba vybraných kontajnerov. Na konci nájdete príklad konfigurácie pre Docker kontajner Tautulli, ktorý je pripravený na aktualizáciu cez Watchtower.

Pôvodná konfigurácia Watchtower pre aktualizáciu všetkých Docker kontajnerov

V tejto konfigurácii Watchtower pravidelne kontroluje aktualizácie pre všetky Docker kontajnery a automaticky ich aktualizuje podľa nastaveného harmonogramu.

version: '3'
services:
    watchtower:
        image: containrrr/watchtower
        container_name: watchtower
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
        environment:
            - TZ=Europe/Bratislava
            - WATCHTOWER_MONITOR_ONLY=false
            - WATCHTOWER_SCHEDULE=0 7 7 ? * WED
            - WATCHTOWER_CLEANUP=true
            - WATCHTOWER_NOTIFICATIONS=email
            - WATCHTOWER_NOTIFICATION_EMAIL_FROM=vas@smtpemail.sk
            - WATCHTOWER_NOTIFICATION_EMAIL_TO=kam@poslatemail.sk
            - WATCHTOWER_NOTIFICATION_EMAIL_SERVER=vas.smtpserver.sk
            - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=VaseSMTPheslo
            - WATCHTOWER_NOTIFICATION_EMAIL_SUBJECTTAG=Portainer-01 Server Container Updates
            - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=vas@smtpemail.sk
            - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=465
        restart: unless-stopped

Vysvetlenie konfigurácie:

  • WATCHTOWER_SCHEDULE=0 7 7 ? * WED: Nastavuje harmonogram aktualizácií (v tomto prípade každú stredu o 7:07).
  • WATCHTOWER_CLEANUP=true: Po aktualizácii odstráni staré verzie obrazov kontajnerov.
  • WATCHTOWER_NOTIFICATIONS=email: Posiela upozornenia na zadaný e-mail po aktualizácii.
  • WATCHTOWER_NOTIFICATION_EMAIL_*: Konfigurácia pre odosielanie e-mailových notifikácií.
  • WATCHTOWER_MONITOR_ONLY=false: Automaticky vykonáva aktualizácie.

Táto verzia aktualizuje všetky kontajnery na serveri, pretože nepoužíva selektívne označenie kontajnerov.


Upravená konfigurácia Watchtower pre aktualizáciu len vybraných Docker kontajnerov

V tejto konfigurácii Watchtower aktualizuje iba tie kontajnery, ktoré majú špecifický štítok com.centurylinklabs.watchtower.enable=true. Kontajnery, ktoré tento štítok nemajú, zostanú bez aktualizácie a nebudú nijako ovplyvnené.

version: '3'
services:
    watchtower:
        image: containrrr/watchtower
        container_name: watchtower
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
        environment:
            - TZ=Europe/Bratislava
            - WATCHTOWER_MONITOR_ONLY=false
            - WATCHTOWER_SCHEDULE=0 7 7 ? * WED
            - WATCHTOWER_CLEANUP=true
            - WATCHTOWER_NOTIFICATIONS=email
            - WATCHTOWER_NOTIFICATION_EMAIL_FROM=vas@smtpemail.sk
            - WATCHTOWER_NOTIFICATION_EMAIL_TO=kam@poslatemail.sk
            - WATCHTOWER_NOTIFICATION_EMAIL_SERVER=vas.smtpserver.sk
            - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=VaseSMTPheslo
            - WATCHTOWER_NOTIFICATION_EMAIL_SUBJECTTAG=Portainer-01 Server Container Updates
            - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=vas@smtpemail.sk
            - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=465
            - WATCHTOWER_LABEL_ENABLE=true
        restart: unless-stopped

Vysvetlenie konfigurácie:

  • WATCHTOWER_LABEL_ENABLE=true: Aktivuje režim, v ktorom Watchtower vykoná aktualizáciu iba pre kontajnery označené štítkom com.centurylinklabs.watchtower.enable=true. Kontajnery bez tohto štítku zostanú neaktualizované, čo vám umožní presnú kontrolu nad tým, ktoré kontajnery majú byť aktualizované.

V tejto konfigurácii Watchtower neaktualizuje všetky kontajnery, ale len tie, ktoré majú v konfigurácii pridaný špecifický štítok.


Porovnanie pôvodnej a upravenej konfigurácie

  1. Automatická aktualizácia všetkých kontajnerov (Pôvodná konfigurácia):

    • Všetky kontajnery sú kontrolované a aktualizované podľa harmonogramu bez ohľadu na to, či majú štítok.
    • Vhodné pre servery, kde sa požaduje, aby všetky kontajnery vždy používali najnovšie verzie.
  2. Automatická aktualizácia len vybraných kontajnerov (Upravená konfigurácia):

    • Len kontajnery s pridaným štítkom com.centurylinklabs.watchtower.enable=true budú automaticky aktualizované.
    • Kontajnery bez štítku zostanú neaktualizované, čo poskytuje kontrolu nad aktualizáciami, pričom stabilné kontajnery zostávajú v pôvodnej verzii.

Príklad konfigurácie docker-compose.yml pre Tautulli s nastaveným štítkom

Tu je príklad, ako pridať štítok k Docker kontajneru Tautulli, aby ho Watchtower automaticky aktualizoval.

version: '3'
services:
    tautulli:
        image: tautulli/tautulli
        container_name: tautulli
        ports:
            - "8181:8181"  # Nastavte si preferovaný port
        volumes:
            - /path/to/tautulli/config:/config  # Upravte cestu k dátam Tautulli
            - /path/to/tautulli/data:/data
        environment:
            - PUID=1000  # Nastavenie používateľských oprávnení
            - PGID=1000  # Skupinové ID pre prístup
            - TZ=Europe/Bratislava  # Časová zóna
        labels:
            - com.centurylinklabs.watchtower.enable=true  # Štítok pre Watchtower
        restart: unless-stopped

Vysvetlenie:

  • Štítok com.centurylinklabs.watchtower.enable=true je pridaný do sekcie labels kontajnera Tautulli, čo zabezpečí, že Watchtower bude aktualizovať len tento kontajner, pokiaľ je nastavený na selektívnu aktualizáciu. Ostatné kontajnery bez tohto štítku zostanú neaktualizované.

Záver

Tento postup poskytuje kompletný návod na nastavenie Watchtower pre dve možnosti:

  • Aktualizácia všetkých Docker kontajnerov
  • Aktualizácia len vybraných kontajnerov pomocou štítku

Ak chcete, aby sa aktualizovali len určité kontajnery, pridajte do konfigurácie Watchtower parameter WATCHTOWER_LABEL_ENABLE=true a potom ku každému zvolenému kontajneru pridajte štítok com.centurylinklabs.watchtower.enable=true. Kontajnery, ktoré tento štítok nemajú, zostanú bez aktualizácie, čím zabezpečíte stabilitu tých kontajnerov, ktoré nechcete aktualizovať.

1 lajk