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ítkomcom.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
-
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.
-
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.
- Len kontajnery s pridaným štítkom
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 sekcielabels
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ť.