Usando Watchtower
Si quieres echarle la culpa tendréis que mirar a Angel de uGeek, a Lorenzo de Atareao.es y por último a Carlos M. de ElBlogdeLazaro porque ellos son los culpables de todas las mejoras o modificaciones que le estoy haciendo a mi servidor y esta que voy a explicar a continuación watchtower es una de ellas 😉
No voy a explicar qué hace esta aplicación, porque si leéis los artículos que uGeek, Lorenzo o Lázaro, estarán mejor explicadas, pero en pocas palabras, te mantiene actualizado todos los contenedores de docker, siempre que le actives el label para que watchtower los tenga en cuenta.
Eso sí, hay que tener en cuenta que si no piensas bien qué contenedores quieres que te actualice puedes liar un caos en tu servidor que puede ser de órdago.
Un ejemplo de este caos (yo de momento no tengo activada su auto-actualizació) es el proxy inverso (caddy), porque imagínate que se actualiza, pero da un error y ya no puedes acceder a tus servicios desde el exterior. Por eso, en mi caso pienso bien qué contenedores quiero que se actualicen automáticamente.
Eso sí, os voy a poner mi docker-compose.yml que uso para la instalación de watchtower. Tener en cuenta que es una recopilación de todos los ficheros de configuración que he visto para su instalación.
watchtower:
image: containrrr/watchtower:latest
container_name: watchtower
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- WATCHTOWER_LABEL_ENABLE=true
- WATCHTOWER_CLEANUP=true
- WATCHTOWER_INCLUDE_RESTARTING=true
- WATCHTOWER_INCLUDE_STOPPED=true
- WATCHTOWER_REVIVE_STOPPED=false
- WATCHTOWER_NO_RESTART=false
- WATCHTOWER_TIMEOUT="30s"
# AQUESTA OPCIÓ LA TINC DESACTIVADA, PERQUE TINC DUBTES DE QUE FUNCIONI CORRECTAMENT, ENCARA QUE EL LOG DONAR CONSTANCIA DE QUE SI
#- WATCHTOWER_SCHEDULE=0 0 4 * * *
# L'HE SUBSTITUIT PER AQUESTA
- WATCHTOWER_POLL_INTERVAL=86400
- WATCHTOWER_NOTIFICATION_URL=telegram://token_telegram@telegram/?channels=id_canal
- WATCHTOWER_NOTIFICATIONS_HOSTNAME=nombreServidor
#WATCHTOWER_NOTIFICATIONS: gotify
#WATCHTOWER_NOTIFICATION_GOTIFY_URL: https://gotify.tuservidor.es
#WATCHTOWER_NOTIFICATION_GOTIFY_TOKEN: AAAAAAAAAAAAAAA
- WATCHTOWER_DEBUG=true
- TZ=Europe/Madrid
Al principio, watchtower no me funcionaba correctamente, en pocas palabras no funcionaba ni hacía nada.
Así que me tocó investigar qué podía ser y al final después de mucho buscar, vi que me faltaba informar de en qué red iba a trabajar el contenedor. Esto se configura de la siguiente manera:
network_mode: bridge
También hay que tener en cuenta, que para informar a watchtower de los contenedores que queremos que vigile por si tiene alguna actualización es de la siguiente manera (tener en cuenta, que tiene que estar en todos los contenedores que queremos sean controlados):
labels:
- com.centurylinklabs.watchtower.enable="true"
En teoría ya tendría que funcionar. Al principio no parece que funcionaba y estaba con la mosca detrás de la oreja, porque no me actualizada nada. Así que le puse que se ejecutara cada minuto y al final, a partir de que configuré correctamente la red empezó a funcionar, me actualizó un par de contenedores y así quedó.
Se actualizó y desde entonces, no ha vuelto a actualizar ningún contenedor más. Y es la duda que tengo, no sé si es porque no hay ninguna actualización o porque no está funcionando correctamente.
Seguiré observando si funciona correctamente.