Loading...

Aprende / Contenedores y plataforma

Despliega un contenedor Docker en la CDN y sírvelo desde el edge

No necesitas gestionar tu propio servidor para poner un contenedor Docker en línea. En la plataforma gestionada de cdn.com.tr despliegas tu imagen Docker como una managed container app, y se sirve a través del edge de la CDN — con dominio personalizado, HTTPS automático, y caché y WAF por delante. Esto es lo que significa "Docker en la CDN", cómo desplegar un contenedor Docker desde el panel o la CLI cdnctl, cómo ejecutar un stack docker-compose completo con add-ons, y cómo funciona el auto-deploy desde Git.

Updated

Despliega un contenedor Docker en la CDN y sírvelo desde el edge

Qué significa "Docker en la CDN"

Una CDN en su forma clásica se sitúa delante de un sitio web que ya ejecutas: el edge cachea tu origen estático y lo acelera. Eso es el modo Pull, y es genial cuando tienes un servidor en algún sitio. Pero si lo que tienes es una imagen Docker — una API backend, una web app, un worker — igualmente necesitarías una máquina para ejecutar de verdad ese contenedor. Ese es el hueco que llena la plataforma de managed container.

En cdn.com.tr despliegas la imagen Docker en sí. La plataforma ejecuta tu contenedor como una managed container app y lo pone detrás del edge de la CDN, así que la misma imagen que ejecutas en tu portátil con docker run ahora se sirve en un dominio real con HTTPS automático, caché en el edge y un WAF por delante — sin que tengas que aprovisionar una VM, instalar Docker, configurar TLS o montar un reverse proxy. Tú aportas una imagen y un puerto; la plataforma se encarga de ejecutarla y servirla globalmente. A esto se refiere la gente con "Docker en una CDN" o "Docker hosting" hecho de forma gestionada: el contenedor es el origen, y el edge lo entrega.

Opción A — desplegar desde el panel (sin CLI)

La ruta sin código transcurre por completo en el Management Panel de cdn.com.tr. En CDN Hosting / Platforms, elige Managed Container y crea una app a partir de tu imagen. Apuntas a una imagen y tag de un registry (por ejemplo registry.example.com/acme/app:1.0.0), estableces el puerto que escucha tu contenedor (digamos 8080), y añades una ruta de health check para que la plataforma sepa cuándo el contenedor está realmente listo (una ruta HTTP como /health, un TCP check, o ninguno). Añade el dominio personalizado en el que quieres servirla, y si la imagen vive en un registry privado, adjunta las registry credentials que guardaste antes.

Después pulsa Deploy. La plataforma descarga la imagen, arranca el contenedor, espera a que el health check pase, y la pone en línea detrás del edge. Desde la vista Operations de la app puedes ver el progreso del deployment, seguir los logs, ver status y revisions, y reiniciar o hacer rollback — todo sin tocar una terminal. Esta es la ruta adecuada cuando quieres ver todo visualmente o estás desplegando un solo contenedor a mano.

Opción B — la CLI cdnctl

cdnctl es la herramienta de línea de comandos para operadores de cdn.com.tr y controla la misma plataforma. Inicia sesión una vez y elige tu cuenta para que cada comando sepa dónde trabajar: ejecuta cdnctl login --email you@example.com --password ... (o cdnctl configure --endpoint https://cdn.com.tr --token <token> si usas un token de API), luego cdnctl accounts use <account_uuid>. Antes de tu primer deploy, cdnctl container preflight --account <uuid> comprueba que la cuenta está lista.

Crea y despliega el contenedor en dos pasos. Primero defínelo: cdnctl container apps create --account <uuid> --name mobile-backend --image registry.example.com/acme/app --tag 1.0.0 --port 8080 --healthcheck /health --healthcheck-type http --domain api.example.com (añade --registry-credential <uuid> para una imagen privada, y --persistent-mount-path /app/data --persistent-storage-gb 5 si necesita un volumen persistente). Luego envíalo: cdnctl container apps deploy --account <uuid> --app <app_uuid>. Para obtener una vista previa instantánea sin configurar DNS, cdnctl container apps expose --account <uuid> --app <app_uuid> crea al instante una URL inmutable <uid>.cdn.com.tr a la que puedes acceder de inmediato.

La operación del día a día también está toda aquí: apps logs --tail 100 para seguir la salida, apps status y apps wait --status running --timeout 300 para comprobar que está listo, apps restart, apps scale --replicas 0 para pausar (o escalar hacia arriba), apps show para ver la app y sus revisions, apps rollback --revision <uuid> para volver a una release conocida y estable, apps diagnose cuando algo va mal, y apps update ... --env-json '{"APP_URL":"https://api.example.com"}' para cambiar la configuración. Para imágenes privadas, crea la credential una vez con cdnctl container registry-credentials create --account <uuid> --name docker --registry-url https://index.docker.io/v1/ --username <user> --password <token> y referénciala al crear la app.

Stacks multi-servicio, add-ons, jobs y datos

Las apps reales raras veces son un único contenedor. Si ya describes tu stack con docker-compose, puedes desplegarlo entero: cdnctl container compose preview --account <uuid> --file docker-compose.yml muestra lo que se va a crear, y cdnctl container compose apply --account <uuid> --file docker-compose.yml --yes despliega el stack multi-servicio. Tu archivo compose se convierte en managed container apps en la plataforma.

Para las piezas de las que depende tu app, vincula add-ons gestionados en lugar de ejecutarlas tú mismo: cdnctl container addons enable-redis, enable-postgres, enable-database o enable-nats aprovisionan el servicio e inyectan sus datos de conexión en tu app como variables de entorno (usa --env-prefix para controlar sus nombres). El trabajo en segundo plano y programado lo cubren los jobs: cdnctl container jobs create --account <uuid> --app <app_uuid> --name sync --schedule "*/30 * * * *" --method POST --path "/run" registra un job tipo cron que llama a tu app según un calendario, y jobs run [--wait] lo dispara bajo demanda. Y para sembrar estado, cdnctl container imports database --file dump.sql.gz carga un dump SQL, mientras que cdnctl container imports files --file data.tar.gz --target-path /app/data descomprime archivos en un volumen persistente.

Servido a través del edge de la CDN

La razón de ejecutar tu contenedor aquí en lugar de en una VM desnuda es lo que se sitúa delante de él. Una vez desplegada, tu app es accesible en el dominio personalizado que adjuntaste, servida a través del edge de la CDN. El TLS es automático — tienes HTTPS sin certificado que comprar, instalar o renovar — y las respuestas cacheables se cachean en el edge cerca de tus visitantes, así que tu contenedor hace menos trabajo y los usuarios obtienen respuestas más rápidas. Un WAF se sitúa por delante para filtrar tráfico malicioso y absorber ataques antes de que lleguen a tu contenedor.

No necesitas un dominio personalizado para empezar a probar. cdnctl container apps expose (o la misma acción en el panel) te da una URL inmutable <uid>.cdn.com.tr que sirve tu contenedor en ejecución de inmediato — ideal para una vista previa, una demo, o conectar un cliente móvil a un backend antes de que el DNS esté listo. Cuando estés listo para producción, apunta tu dominio real a la app y se servirá en él en su lugar, con el mismo HTTPS automático y protección en el edge.

Despliega desde Git — CI/CD y promotes sin tiempo de inactividad

Para un proyecto continuo normalmente no quieres ejecutar un comando de deploy a mano cada vez. Conecta un repositorio en el panel y los pushes pueden hacer auto-deploy: cuando haces push, la plataforma construye y redespliega automáticamente, así que enviar un cambio es solo git push. Esta es la ruta de CI/CD para contenedores en la CDN.

Para mantener producción a salvo, los deploys pasan por un pipeline de staging → producción. Un push redespliega primero tu entorno Staging, donde puedes revisar la nueva versión en una URL de vista previa; cuando todo está bien, un único Promote manual intercambia al instante ese build en Production. Como el promote es un intercambio instantáneo de una release ya construida y ya calentada, producción cambia con cero tiempo de inactividad — sin rebuild, sin cold start para tus visitantes. cdnctl encaja en el mismo flujo desde un pipeline de CI: autentícate con un token, y luego crea/despliega la app como un paso del build, así que tu CI de GitHub o GitLab existente también puede impulsar deployments.

Qué despliega la gente como contenedores Docker en la CDN

APIs backend y web apps

Despliega tu servicio Node, Python, Go, PHP o Java como contenedor y sírvelo en un dominio real con HTTPS automático y un WAF por delante.

Stacks docker-compose

Trae tu archivo docker-compose existente y despliega todo el stack multi-servicio, con Redis, Postgres o NATS gestionados vinculados como env vars.

Backends móviles y de apps

Publica un backend, expón una URL instantánea <uid>.cdn.com.tr para probar tu cliente, y luego promuévela a producción en tu dominio personalizado con cero tiempo de inactividad.

FAQ de Docker en la CDN

¿Puedo ejecutar un contenedor Docker en una CDN?

Sí. En la plataforma gestionada de cdn.com.tr despliegas tu imagen Docker como una managed container app, y se sirve a través del edge de la CDN — con dominio personalizado, HTTPS automático, y caché y WAF por delante. No aprovisionas ni mantienes un servidor; aportas una imagen y un puerto y la plataforma la ejecuta.

¿Cómo despliego un contenedor Docker — panel o línea de comandos?

Ambos controlan la misma plataforma. Usa el Management Panel (CDN Hosting / Platforms → Managed Container) para crear una app a partir de una imagen y hacer Deploy visualmente, o usa la CLI cdnctl: cdnctl container apps create ... luego cdnctl container apps deploy. La CLI también encaja en CI/CD.

¿Necesito un dominio personalizado para previsualizar mi contenedor?

No. Ejecuta cdnctl container apps expose (o la misma acción en el panel) y obtienes una URL inmutable <uid>.cdn.com.tr que sirve tu contenedor en ejecución de inmediato — sin necesidad de configurar DNS. Adjunta tu dominio personalizado cuando estés listo para producción.

¿Puedo desplegar un stack docker-compose completo?

Sí. cdnctl container compose preview muestra lo que se va a crear y cdnctl container compose apply --file docker-compose.yml --yes despliega el stack multi-servicio. También puedes vincular add-ons gestionados — Redis, Postgres o NATS — para que sus datos de conexión lleguen a tu app como variables de entorno.

¿Cómo funciona desplegar desde Git, y es seguro para producción?

Conecta un repositorio y los pushes pueden hacer auto-deploy. Los deploys pasan por un pipeline de staging → producción: un push redespliega Staging, y un único Promote manual intercambia al instante el build en Production. Como el promote es un intercambio instantáneo de una release ya construida, producción cambia con cero tiempo de inactividad.