Portal de inicio automático de contenedores con Portainer y Watchtower

Automatiza y gestiona tus contenedores Docker: Portal web con Portainer y Watchtower

¿Te agobia tener que arrancar, detener y monitorizar manualmente todos tus contenedores Docker? Hoy te traigo un proyecto doble que te solucionará la vida en tu VPS/Docker host: Portainer (portal web para administrar Docker) junto a Watchtower (actualización automática de contenedores).

¿Por qué elegir este stack?

  • Portainer te ofrece un panel visual para controlar tus contenedores, imágenes, volúmenes y redes. Olvídate de depender exclusivamente del terminal.
  • Watchtower supervisa tus contenedores y, cuando detecta una nueva versión de la imagen en Docker Hub, ¡los vuelve a desplegar automáticamente! Así tu sistema está siempre actualizado.
  • Ambos servicios juntos crean un entorno perfecto para la gestión y mantenimiento de proyectos Docker, ideal si planeas alojar más proyectos después.

Este stack es ideal para principiantes y también para usuarios avanzados que quieren automatización y visibilidad en sus despliegues.

Fichero docker-compose.yml para Portainer + Watchtower

Copia y pega este fichero en tu VPS o servidor en una carpeta dedicada, y ejecuta docker compose up -d. ¡Así de fácil!

version: "3.9"
services:
  portainer:
    image: portainer/portainer-ce:latest
    restart: unless-stopped
    container_name: portainer
    ports:
      - "9000:9000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
    environment:
      - TZ=Europe/Madrid
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/api/status"]
      interval: 30s
      timeout: 10s
      retries: 3

  watchtower:
    image: containrrr/watchtower:latest
    restart: unless-stopped
    container_name: watchtower
    environment:
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_POLL_INTERVAL=3600
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080"]
      interval: 2m
      timeout: 10s
      retries: 2

volumes:
  portainer_data:
    driver: local
    

¿Qué hace cada servicio?

  • Portainer se expone en el puerto 9000 y almacena los datos en el volumen portainer_data.
  • Watchtower no expone puertos (pero puedes añadirlos si quieres ver sus logs en tiempo real), y sus variables controlan cada cuánto busca nuevas versiones (POLL_INTERVAL) y si elimina imágenes antiguas (CLEANUP).

Primeros pasos tras el despliegue

  1. Accede a Portainer en http://<IP-de-tu-servidor>:9000 y crea tu usuario admin.
  2. Revisa la lista de contenedores, imágenes y redes. ¡Intuitivo, rápido y visual!
  3. Watchtower estará trabajando en segundo plano, rastreando cuando tus imágenes tengan nuevas versiones en Docker Hub y actualizándolas (puedes consultar sus logs con docker logs watchtower).

Consejos y troubleshooting

  • Seguridad: Limita el acceso al puerto 9000 usando tu firewall, o configura Portainer detrás de un proxy con HTTPS.
  • Personaliza Watchtower: Ajusta WATCHTOWER_POLL_INTERVAL para revisar actualizaciones con más o menos frecuencia.
  • Recuerda que Watchtower solo actualiza imágenes Docker que han sido actualizadas en Docker Hub. Si tus contenedores son personalizados, deberás subir nuevas imágenes allí.
  • Problema típico: Si Portainer no arranca, verifica que el volumen /var/run/docker.sock existe y que tu usuario tiene permisos sobre Docker.

Para mantener el sistema seguro y eficiente, revisa los logs con docker logs portainer y docker logs watchtower ante cualquier duda.

¿Te animas a probar esta combinación? Tu VPS se volverá mucho más fácil de usar y mantener.

Avatar

Por Mid