6.1 · Casos prácticos

Nivel 6 · En la práctica

6.1Casos prácticos

Objetivo: ver cómo las competencias de los niveles 0 a 5 se encadenan en casos reales.
Tiempo estimado: 14 min · Si solo tienes 5 min: lee «Lo esencial en 30s» + el esquema.

Lo esencial en 30 segundos

  • Ensamblar : Dockerfile limpio (slim, dependencias primero, non-root), imagen etiquetada 1.0, stack Compose declarativo, persistencia probada, CI como única fábrica.
  • Probar : probar en local, hacer que un tercero descargue y lance, probar down/up sin pérdida — lo que no está probado no existe.
  • Compartir : una imagen versionada y un repo clonado + up = aplicación completa, sin «instala Node 20».

Hilo Idir — dos entregas en Argel

Idir, devops junior en Argel, repasa sus dos proyectos destacados del trimestre : contenerizar la API Node que solo corría en el portátil de su autor (Dockerfile, build 1.0, endurecimiento, subida al registro, retomada por un compañero), y luego equipar a su equipo pequeño con un stack Compose api + base + consola (parámetros, restart y healthcheck, validación, prueba sin pérdida). Los dos casos siguientes retoman su encadenamiento : escribir limpio, construir, endurecer, compartir, declarar, probar.

Cada caso sigue el desarrollo Contexto → Pasos → Resultado : rejuégalo en tu aplicación.

Poner las piezas de punta a punta

Los niveles anteriores sentaron las piezas (imágenes, contenedores, volúmenes, redes, Dockerfile, Compose, registros, CI) ; aquí se ensamblan en condiciones reales : es el encadenamiento de los buenos reflejos — imagen endurecida, stack declarativo, persistencia probada, CI única — lo que distingue un despliegue fiable de un apilamiento frágil. Dos casos desarrollados de la A a la Z.

Caso 1 — Contenerizar una API de la A a la Z

Contexto: Recibimos una API Node que solo corre en el portátil de su autor y debemos entregarla como imagen compartida. Riesgo : un entorno no reproducible y los «en mi máquina sí funciona».

Déroulé :

  1. Escribir el Dockerfile (node:20-slim, WORKDIR, dependencias primero, USER node, CMD) con .dockerignore (N2.1, N2.5).
  2. Construir como mon-app:1.0 y probar en local con -p 3000:3000 (N1.2, N2.1).
  3. Endurecer : .dockerignore, non-root, scan, tag inmutable 1.0 (N2.5, N4.1).
  4. Subir al registro y hacer que un compañero descargue + lance (N2.3, N4.1).
  5. Validar : un tercero lanza la imagen con un comando, sin instalar Node 20.

Resultado: Una imagen 1.0 compartida, lanzable en todas partes con un comando, sin «instala Node 20».

Caso 2 — Stack Compose para un equipo pequeño

Contexto: Un equipo quiere lanzar api + base + consola con un comando, con datos persistidos y actualizaciones simples. Desafío : un stack que se rompe al primer reinicio.

Déroulé :

  1. Escribir compose.yml : api (build), bdd (volumen pgdata), adminer en perfil dev (N3.1, N3.4).
  2. Parametrizar vía ${PORT:-3000} y .env.example versionado, .env no versionado (N3.4, N2.4).
  3. Añadir restart + healthcheck bdd + depends_on healthy (N4.2, N3.2).
  4. Validar con config, up -d --build, y luego probar down/up sin pérdida (N3.2, N4.4).
  5. Documentar : la doc «cómo lanzar» cabe en una línea (clone + up).

Resultado: Un repo clonado + up = aplicación completa ; la doc «cómo lanzar» cabe en una línea.

Error frecuente de interpretación: «recopiar los casos tal cual». No. Los casos muestran un orden de producción (escribir limpio, construir, endurecer, compartir, declarar, probar), no una receta para copiar : retoma el orden, adapta imagen, servicios y parámetros a tu aplicación.
Versión en texto del esquema (SEO / lectores de pantalla / traducción): Cadena completa : 1) Escribir (Dockerfile slim, dependencias primero, USER node, .dockerignore, N2.1/N2.5). 2) Construir y probar (tag inmutable 1.0, run -p en local, N1.2). 3) Endurecer (non-root, scan, tag 1.0 nunca latest en prod, N2.5/N4.1). 4) Compartir (push al registro, pull + run por un tercero, N2.3/N4.1). 5) Declarar (compose.yml api + bdd + perfil dev, ${PORT:-3000}, .env.example, N3.1/N3.4). 6) Fiabilizar y probar (restart, healthcheck, depends_on healthy, config, up -d --build, down/up sin pérdida, N4.2/N4.4). Lección : un despliegue fiable viene del encadenamiento, no de un solo comando.

Guion listo para decir — enmarcar una entrega Docker (30 s)

«Nuestra necesidad : [API por compartir / stack api + base]. Nuestra imagen : [slim, non-root, tag 1.0, escaneada]. Nuestro stack : [compose versionado, ${PORT:-3000}, volumen pgdata]. Nuestra prueba : [descarga por un tercero / down-up sin pérdida].»

Modelo copiar-pegar — encadenamiento caso práctico

docker build -t mon-app:1.0 .
docker run -d --name api -p 3000:3000 mon-app:1.0
docker compose config
docker compose up -d --build
docker compose ps
docker compose down
docker compose up -d

TPE / presupuesto ajustado

Un solo caso rejugado en pequeño : una imagen 1.0, un compose de dos servicios, prueba down/up anotada.

PYME Argel

Adaptar a las realidades locales : probar en la máquina real del equipo, prever el volumen pgdata con copia de seguridad.

Remoto / híbrido

Duplicar la trazabilidad a distancia : tag, registro y prueba down/up anotados y compartidos.

Intercultural

Explicitar la doc antes de transponer un caso : una línea «clonar + up» debe hablar a todo recién llegado.

Prudencia: Recordatorio genérico : una imagen compartida compromete a tu equipo — tags inmutables, non-root, scan, cero secretos en la imagen y en el git, .env no versionado, prueba down/up antes de dar la entrega por hecha.

Reto 48h — aplica mañana

Toma 1 aplicación real y rejuega el encadenamiento : Dockerfile limpio, build 1.0, run local, compose validado con config, prueba down/up sin pérdida.

Lista de salida de la sección
  • Sé encadenar Dockerfile, build, publicación y stack Compose en un caso real.
  • Tengo un encadenamiento rejecutable (imagen 1.0, compose versionado, prueba sin pérdida).
  • Hice el reto 48h o planifiqué su fecha.
Autoevaluación 1-5 : ¿retoma un tercero mi imagen con un comando?¿está probada mi persistencia con down/up?
Comprueba tu comprensión

Idir entrega su API. ¿Qué encadenamiento respeta la guía?