MINI TUTORIAL DOCKER – DÍA 6

Docker Compose básico: definir servicios en YAML

(un solo archivo para levantar/apagar todo un entorno)


1. Objetivo del día

Hoy aprenderás:

  • qué es Docker Compose y por qué se usa tanto
  • cómo crear un archivo docker-compose.yml
  • los comandos básicos (up, down, ps, logs)
  • cómo definir un servicio Nginx con un volumen y un puerto
  • cómo levantar todo el entorno con un solo comando
  • cómo modificar el YAML y aplicar cambios
  • cómo interpretar las partes esenciales de un compose

Este día prepara el terreno para el proyecto final del Día 7.


2. ¿Qué es Docker Compose?

Docker Compose es una herramienta que permite:

👉 definir uno o varios contenedores en un archivo YAML
👉 y levantarlos con un solo comando.

Es perfecto para:

  • entornos locales
  • stacks pequeños (web + base de datos)
  • pruebas
  • desarrollo
  • reproducir entornos rápidamente en cualquier máquina

No es lo mismo que Kubernetes, pero el hábito de definir infraestructuras en YAML empieza aquí.


3. Comprobar que tienes Docker Compose

Las versiones modernas de Docker ya incluyen “docker compose” integrado:

docker compose version

Si ves algo así:

Docker Compose version v2.x.x

Todo OK.


4. Crear un entorno simple con Nginx + volumen

Vamos a usar un solo servicio (Nginx) para aprender el formato.

Estructura recomendada:

miweb/
 ├─ docker-compose.yml
 └─ html/
      └─ index.html

4.1 Crear la carpeta de trabajo

mkdir miweb
cd miweb
mkdir html
echo "<h1>Hola desde Docker Compose</h1>" > html/index.html

4.2 Archivo docker-compose.yml

Crea el archivo:

nano docker-compose.yml

Contenido:

version: "3.9"

services:
  web:
    image: nginx
    container_name: miweb-nginx
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    restart: unless-stopped

Explicación clara:

  • image: nginx → usa imagen oficial
  • ports: "8080:80" → navegador → host:8080 → contenedor:80
  • ./html:/usr/share/nginx/html:ro → HTML local montado dentro de nginx
  • :ro → read-only (opcional, buena práctica)
  • restart: unless-stopped → reinicio automático si falla

5. Levantar el stack

En la carpeta donde está el YAML:

docker compose up -d

Esto hace:

  • crea red interna para el stack
  • crea contenedor
  • aplica puertos
  • monta volumen
  • arranca Nginx

Comprobar:

docker compose ps

6. Comprobar en el navegador

👉 Abre http://localhost:8080

Deberías ver:

Hola desde Docker Compose


7. Ver logs desde Compose

docker compose logs
docker compose logs -f

-f sigue los logs en tiempo real.


8. Parar y borrar el stack

Para detenerlo:

docker compose down

Todo se elimina excepto los archivos locales (html/).

👉 OJO:
“down” NO borra volúmenes persistentes a menos que añadas -v:

docker compose down -v

9. Modificar el YAML y aplicar cambios

Ejemplo: cambiar el puerto a 8081:

Edita:

ports:
  - "8081:80"

Aplicar cambios:

docker compose down
docker compose up -d

Docker recreará el contenedor automáticamente.


10. Añadir un segundo servicio (opcional del día 6)

Aunque nos lo guardaremos para el Día 7 (stack real),
puedes ver qué fácil es añadir un segundo servicio:

services:
  web:
    image: nginx
    ports:
      - "8080:80"

  cliente:
    image: alpine
    command: ["sleep", "3600"]

Y ambos estarían en la misma red interna generada por Compose.

Pero esto lo usaremos mañana en el proyecto final.


11. Práctica guiada del Día 6 (30–40 min)

✔ 1) Crear la estructura:

mkdir miweb
cd miweb
mkdir html
echo "<h1>Hola Compose</h1>" > html/index.html

✔ 2) Crear el compose file:

nano docker-compose.yml

Pegar el YAML del ejemplo.

✔ 3) Levantar:

docker compose up -d

✔ 4) Comprobar:

docker compose ps

Navegador → http://localhost:8080

✔ 5) Ver logs:

docker compose logs

✔ 6) Apagar y limpiar:

docker compose down

✔ 7) Cambiar el puerto (8081) y volver a levantar

docker compose up -d

12. Checklist del Día 6

  • Entiendo qué es Docker Compose
  • Sé crear un archivo docker-compose.yml
  • Sé levantar un stack con docker compose up -d
  • Sé ver logs con docker compose logs
  • Sé parar y eliminar contenedores con docker compose down
  • He servido una web simple usando compose

Si está marcado → Día 6 completado


Día 7 de Docker
proyecto final: un stack real con Docker Compose (WordPress + MariaDB o Uptime Kuma).

[Índice Minti Tutorial Docker 7 días]

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies