Muchas aplicaciones se levantan con Docker Compose, pero fallan al reiniciar porque no validan salud, no separan redes o pierden datos por volúmenes mal definidos.

Docker Compose permite definir servicios, redes, volúmenes, variables y healthchecks en un archivo declarativo. Bien usado, ayuda a construir entornos más estables, predecibles y fáciles de revisar antes de pasar a producción.

Cuándo conviene aplicarlo

Este enfoque es útil para:

  • MVPs que empiezan a crecer hacia producción.
  • Ambientes de staging.
  • Aplicaciones web con base de datos y caché.

Requisitos previos

Antes de empezar, asegúrate de contar con:

  • Docker Engine y el plugin Compose.
  • Un servidor Linux.
  • El repositorio de la aplicación.
  • Variables de entorno fuera del repositorio.

Arquitectura de trabajo

El flujo recomendado conecta una red frontend, el servicio web, una red backend, PostgreSQL, Redis y healthchecks.

La idea es validar cada etapa antes de pasar a la siguiente, conservar un punto de retorno y evitar cambios invisibles en producción.

Paso 1: Crear el archivo de entorno

Centraliza los valores sensibles fuera del archivo Compose y facilita los cambios entre staging y producción.

cp .env.example .env
chmod 600 .env

Paso 2: Definir servicios y redes

Separar el tráfico público del privado reduce el riesgo de exponer la base de datos por error.

services:
  web:
    build: .
    ports: ['8080:8000']
    networks: [frontend, backend]

  db:
    image: postgres:18
    networks: [backend]

networks:
  frontend: {}
  backend: {}

Paso 3: Agregar volúmenes persistentes

Los volúmenes persistentes evitan perder datos al recrear contenedores.

volumes:
  pgdata:

services:
  db:
    volumes:
      - pgdata:/var/lib/postgresql/data

Paso 4: Configurar healthchecks

Un healthcheck permite distinguir entre un contenedor encendido y un servicio realmente listo para operar.

healthcheck:
  test: ['CMD-SHELL', 'pg_isready -U app']
  interval: 10s
  timeout: 5s
  retries: 5

Paso 5: Levantar y revisar el estado

Antes de exponer la aplicación, confirma que todos los servicios estén sanos.

docker compose up -d --build
docker compose ps
docker compose logs -f web

Pruebas de funcionamiento

Antes de mover el cambio a producción, ejecuta las validaciones del último paso y revisa:

  • Los logs del servicio.
  • La salida de los comandos.
  • El estado de cada contenedor.
  • La respuesta real de la aplicación.

Si el cambio afecta datos, restaura o prueba primero en un entorno aislado antes de operar sobre información real.

Advertencias de seguridad

Ten en cuenta estas recomendaciones antes de publicar el entorno:

  • No publiques puertos de base de datos o caché si no son necesarios.
  • Usa archivos .env con permisos restrictivos.
  • Evita latest en servicios críticos.

Problemas frecuentes

La app inicia antes que la base de datos

Usa healthcheck y depends_on con condición cuando el flujo lo requiera.

El volumen parece vacío

Revisa el nombre del proyecto Compose y el volumen activo con:

docker volume ls
diagrama de docker

Buenas prácticas para producción

Para un entorno más robusto, considera:

  • Agregar rotación de logs del daemon Docker.
  • Respaldar volúmenes.
  • Separar staging y producción con archivos override.
  • Probar la restauración de datos.

Cloud Serversby Donweb

Todo el poder de la nube a tus proyectos y aplicaciones.
Alojamiento ultra rápido, escalable y con alta disponibilidad.

  • Performance que te sorprenderá
  • Rápida escalabilidad y sin limitaciones
  • Arquitectura de alta disponibilidad
  • Soporte experto y ejecutivos de cuenta
  • Pagos en tu moneda y facturación local

Descubre la mejor solución de Cloud Hosting