En este mini-post voy a explicar como tener actualizados los contenedores de docker de una manera automática. Para esto se va a utilizar la herramienta watchtower. Está desarrollada por v2tec y es muy sencilla de utilizar. Lo único que hay que hacer es configurar los parámetros que ser requieran y lanzarla.
También es capaz de detectar los links entre los contenedores desplegados para actualizarlos y pararlos en un orden en el que no haya perdida de datos.
Docker-Compose
En este caso se va a desplegar mediante docker-compose
version: '3' services: server: image: v2tec/watchtower restart: always volumes: - /var/run/docker.sock:/var/run/docker.sock command: --cleanup --schedule "0 0 3 * * 0" environment: - WATCHTOWER_NOTIFICATIONS=email - WATCHTOWER_NOTIFICATION_EMAIL_FROM=watchtower@example.com - WATCHTOWER_NOTIFICATION_EMAIL_TO=ismael@example.com - WATCHTOWER_NOTIFICATION_EMAIL_SERVER=mail.example.com - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=watchtower@example.com - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=mail_pass
Parámetros adicionales
Hay diferentes variantes de lanzar esta herramienta. En este caso se lanza con un cron que la ejecute cada domingo a las 3 de la mañana. Pero se podría poner para que este revisando cambios cada X tiempo añadiendo el parámetro –interval y el tiempo en segundos que se quiera. Por defecto son 300 segundos. Esta opción no es compatible con la opción de schedule.
Además de esto, si se activa el parámetro de label –label-enable , solo actualizará los contenedores que contengan el label: com.centurylinklabs.watchtower.enable=true por lo que da un mayor control de los contenedores que se quieren actualizar. Si no, por defecto se actualizarán todos.