Loading...

Aprende / Despliegue

Desplegar una aplicación multiservicio con Docker Compose

¿Tienes un docker-compose.yml con un servicio web, un worker y una base de datos? cdn.com.tr lo convierte en aplicaciones en contenedor y complementos gestionados — previsualiza el plan y luego aplícalo con un solo comando. Sin clúster que operar, sin base de datos que vigilar.

8 min de lectura Intermedio Updated

Desplegar una aplicación multiservicio con Docker Compose

Qué necesitas

Necesitas una aplicación descrita por un docker-compose.yml —normalmente un servicio web, quizá un worker en segundo plano, y servicios de apoyo como una base de datos y Redis— y una cuenta de cdn.com.tr. No ejecutarás un clúster de Kubernetes, no administrarás un servidor de base de datos, ni configurarás TLS a mano. cdn.com.tr lee tu archivo compose y asigna cada parte a una pieza gestionada: los servicios de aplicación se convierten en aplicaciones en contenedor, y los servicios con estado como Postgres, MySQL o Redis se convierten en complementos gestionados que se respaldan y se inyectan en tus aplicaciones como variables de entorno.

Cómo se traduce tu archivo compose

La idea es simple: todo lo que sirve tráfico o ejecuta código se convierte en una aplicación en contenedor, y todo lo que almacena datos se convierte en un complemento gestionado. Un servicio 'web' se convierte en una aplicación con un dominio; un 'worker' se convierte en una aplicación sin puerto público; un 'db' que use una imagen de Postgres o MySQL se convierte en una base de datos gestionada; un servicio 'redis' se convierte en Redis gestionado. Tus servicios siguen comunicándose entre sí por nombre, y los datos de conexión de los complementos gestionados se proporcionan a tus aplicaciones automáticamente — así que eliminas el contenedor de base de datos autoalojado y arriesgado y dejas que la plataforma lo ejecute.

Un archivo compose de ejemplo

Aquí tienes una pequeña aplicación multiservicio: una API web, un worker en segundo plano, una base de datos Postgres y Redis. Confírmalo en tu repositorio como docker-compose.yml.

docker-compose.yml

services:
  web:
    build: .
    ports:
      - "8000:8000"
    environment:
      DATABASE_URL: postgres://app:secret@db:5432/app
      REDIS_URL: redis://redis:6379
    depends_on: [db, redis]

  worker:
    build: .
    command: ["python", "worker.py"]
    depends_on: [db, redis]

  db:
    image: postgres:16
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: app

  redis:
    image: redis:7

Previsualiza el plan primero

Antes de cambiar nada, pregúntale a cdn.com.tr qué crearía. La vista previa lee tu archivo compose y muestra el plan: qué servicios se convierten en aplicaciones en contenedor, cuáles en complementos gestionados, y cómo se conectan. Todavía no se crea nada — solo ves lo que ocurrirá.

cdnctl — vista previa
cdnctl login
cdnctl accounts use <account_uuid>

cdnctl container compose preview --file docker-compose.yml
# web, worker  -> aplicaciones en contenedor
# db           -> base de datos gestionada (postgres)
# redis        -> redis gestionado

Aplícalo

¿Te convence el plan? Aplícalo. cdn.com.tr crea las aplicaciones en contenedor y los complementos, conecta las cadenas de conexión en tus aplicaciones, y arranca todo. También puedes hacerlo desde el panel — importa el archivo compose, revisa el plan y confirma — pero un solo comando te permite mantenerlo en tu CI o en un script.

cdnctl — aplicar
cdnctl container compose apply --file docker-compose.yml --yes

# luego, en cualquier momento:
cdnctl container apps list
cdnctl container apps logs --app <web_app_uuid> --tail 100

Dominio, HTTPS y el edge

Apunta tu dominio a la aplicación web y cdn.com.tr emite y renueva el SSL automáticamente. Tus servicios ahora se ejecutan como aplicaciones gestionadas detrás de la CDN edge, con un WAF por delante y los picos de tráfico absorbidos en el edge; la base de datos y Redis están gestionados y respaldados. Para publicar una actualización, reconstruye tu imagen y aplica de nuevo — una compilación fallida mantiene la versión anterior sirviendo. Obtienes un despliegue de producción multiservicio sin operar un clúster ni una base de datos por debajo.

Buenos casos de uso

Aplicaciones web + worker + cola

Las aplicaciones con una capa web, workers en segundo plano y una base de datos encajan de forma directa en aplicaciones más complementos gestionados.

Migrar una pila existente

¿Ya tienes un docker-compose.yml funcionando? Impórtalo tal cual en lugar de reconstruir tu despliegue desde cero.

Cambios de previsualizar y luego aplicar

La vista previa muestra exactamente qué cambiará antes de que se ejecute nada — seguro de usar desde CI o un script.

Preguntas frecuentes sobre el despliegue con Docker Compose

¿Ejecuta docker-compose tal cual en una VM?

No — convierte tu archivo compose en recursos gestionados: los servicios se convierten en aplicaciones en contenedor y los servicios con estado en complementos gestionados. Eso significa que no hay VM que parchear y una base de datos que se respalda y se opera por ti, mientras tu aplicación mantiene la misma forma.

¿Qué pasa con mis servicios de base de datos y Redis?

Un servicio Postgres, MySQL o Redis se convierte en un complemento gestionado. El contenedor de tu archivo compose no se ejecuta tal cual; en su lugar, el complemento gestionado proporciona los datos de conexión a tus aplicaciones como variables de entorno.

¿Puedo ver qué ocurrirá antes de aplicar?

Sí. 'cdnctl container compose preview' muestra el plan completo — qué servicios se convierten en aplicaciones, cuáles en complementos, y cómo se conectan — sin crear nada. Aplica solo cuando el plan te parezca correcto.