Actualitzar els contenidors amb Watchtower
Introducció
Si tens un servidor a casa teva, probablement utilitzes Docker per desplegar serveis.
Un desavantatge que té això és l’actualització dels serveis: per actualitzar un contenidor, cal actualitzar la imatge i reiniciar el servei, i fer-ho manualment no és massa eficient. Per això utilitzarem avui Watchtower.
Què és Watchtower?
Watchtower és un programa de codi obert, disponible en contenidor Docker, que monitoreja els contenidors Docker que estan en execució i busca si hi ha imatges més noves per aquests. Si n’hi ha una de nova, se la baixarà i reiniciarà el contenidor, deixant-lo funcionant amb els mateixos paràmetres que estava executant-se però amb la nova imatge. A més, ens eliminarà la imatge vella automàticament.
Ús
En el meu cas, i utilitzant docker compose, tinc a l’arxiu docker-compose.yaml el següent:
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_INCLUDE_RESTARTING=true
- WATCHTOWER_INCLUDE_STOPPED=true
- WATCHTOWER_REVIVE_STOPPED=false
- WATCHTOWER_NO_RESTART=false
- WATCHTOWER_TIMEOUT=30s
- WATCHTOWER_SCHEDULE=0 0 4 * * *
- WATCHTOWER_DEBUG=false
- TZ=Europe/Madrid
network_mode: bridge
Extret de El Blog de Lázaro.
Amb això, estem passant el socket de Docker al contenidor de Watchtower, per poder comunicar-se amb el dimoni Docker i controlar la resta de contenidors.
Els paràmetres d’entorn que li enviem són bàsicament l’horari (cada dia a les 4 del matí), l’opció perquè elimini les imatges velles, un timeout o que també actualitzi els contenidors parats però no els iniciï.
Un cop fet això, podem executar el contenidor i, per comprovar que està operatiu, podem revisar-ne els logs. El primer cop hauria d’aparèixer quelcom semblant a:
time="2024-09-19T18:56:56+02:00" level=info msg="Watchtower 1.7.1"
time="2024-09-19T18:56:56+02:00" level=info msg="Using no notifications"
time="2024-09-19T18:56:56+02:00" level=info msg="Checking all containers (except explicitly disabled with label)"
time="2024-09-19T18:56:56+02:00" level=info msg="Scheduling first run: 2024-09-20 04:00:00 +0200 CEST"
time="2024-09-19T18:56:56+02:00" level=info msg="Note that the first check will be performed in 9 hours, 3 minutes, 3 seconds"
També es podria fer una tasca amb un crontab, on podriem configurar-ho més a la nostra manera i no seria gaire complicat de fer.
Fins aquí el post d’avui. Si t’ha estat d’utilitat pots deixar un comentari o compartir-ho. Ens veiem al següent!