Watchtower

Watchtower es un contenedor que se ejecuta en segundo plano y se encarga de vigilar tus contenedores Docker y actualizarlos automáticamente cuando detecta que hay una nueva imagen disponible en el registry (Docker Hub, GitHub Container Registry, etc.).
En otras palabras: es un “autoupdater” para Docker.
Funcionamiento
-
Watchtower comprueba periódicamente las imágenes de los contenedores que tengas corriendo.
-
Si encuentra una versión más reciente, la descarga.
-
Para cada contenedor afectado:
-
Lo detiene,
-
Lo recrea usando la nueva imagen,
-
Lo arranca de nuevo con las mismas opciones (puertos, volúmenes, variables de entorno, etc.) que tenía antes.
-
Enlaces
Requisitos
- Docker instalado siguiendo los pasos de instalar
- Portainer configurado siguiendo los pasos de instalar portainer.
- NGINX Proxy manager siguiendo los pasos de instalar NGINX Proxy Manager. (opcional)
- Traefik configurado siguiendo los pasos de instalar Traefik. (opcional)
Imagen
Repositorio de Docker Hub: containrrr/watchtower - Docker Image | Docker Hub
Portainer- Nuevo «stack»
Add a new stack – Portainer Documentation
Web editor
En Portainer «Stack» agregamos nuevo usando el editor WEB pegando el contenido del fichero «docker-compose.yml» y el contenido del fichero de variables
Fichero de variables
TZ=Europe/Madrid
PUID=1000
PGID=1000
Fichero docker-compose
services:
watchtower:
image: containrrr/watchtower
container_name: watchtower
restart: unless-stopped
environment:
- TZ=Europe/Madrid
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
command:
# Solo contenedores con label com.centurylinklabs.watchtower.enable=true
- --label-enable
# Limpia imágenes antiguas tras actualizar
- --cleanup
# Ejecuta cada noche a las 03:30 (hora del contenedor → usa TZ arriba)
- --schedule=0 30 3 * * *
# (Opcional) tiempo de gracia para que el servicio arranque tras actualizar
- --stop-timeout=30s