Files
watchtower/README.md

87 lines
2.3 KiB
Markdown

# Watchtower — Actualización automática de contenedores
## Qué es
[Watchtower](https://containrrr.dev/watchtower/) monitoriza imágenes y actualiza contenedores automáticamente cuando hay nuevas versiones.
## Características
- Actualiza solo contenedores etiquetados (flag `--label-enable`)
- Limpieza de imágenes antiguas (flag `--cleanup`)
- Programación vía cron con flag `--schedule`
- Tiempo de gracia en parada (`--stop-timeout`)
- Notificaciones (Shoutrrr: Telegram, Slack, Email, etc.)
## Despliegue
```bash
git clone https://git.ictiberia.com/groales/watchtower
cd watchtower
docker compose up -d
```
## Etiquetado de servicios
Para que un servicio se auto-actualice, añade la label:
```yaml
labels:
- "com.centurylinklabs.watchtower.enable=true"
```
Para excluir explícitamente:
```yaml
labels:
- "com.centurylinklabs.watchtower.enable=false"
```
## Configuración (flags usados)
El `docker-compose.yaml` utiliza flags en lugar de variables de entorno para mayor claridad:
```yaml
command:
- --label-enable # Solo contenedores con label enable=true
- --cleanup # Elimina imágenes antiguas tras actualizar
- --schedule=0 30 3 * * * # Ejecuta cada día a las 03:30 (TZ configurado)
- --stop-timeout=30s # Tiempo de gracia al parar contenedores
```
## Buenas prácticas
- Etiqueta solo servicios que quieras actualizar
- Usa horarios de baja actividad (madrugada)
- Revisa logs tras cambios de versiones críticas
- Mantén backups si actualizas servicios con datos persistentes
- Excluye servicios que gestionas manualmente (`enable=false`)
## Configuración de compatibilidad
Watchtower requiere especificar la versión de API de Docker para compatibilidad:
```yaml
environment:
- TZ=Europe/Madrid
- DOCKER_API_VERSION=1.44
```
Esto asegura que Watchtower funcione correctamente con versiones modernas de Docker Engine.
## Troubleshooting
```bash
docker logs watchtower --tail=200
```
---
Última actualización: Nov 2025 (compose con flags)
## Ejemplos de etiquetas
### Portainer (actualizable)
```yaml
labels:
- "com.centurylinklabs.watchtower.enable=true"
```
### NGINX Proxy Manager (excluir)
```yaml
labels:
- "com.centurylinklabs.watchtower.enable=false"
```
### Servicios críticos (actualizar manualmente)
- Programa ventanas con `--schedule`
- Opcional: parar primero y usar `WATCHTOWER_INCLUDE_STOPPED=true`