~/docs /Docker Compose recetas

Docker Compose recetas

Docker Compose recetas

Imported from Notion: Docker Compose recetas

updated:: 2026.07.10

Que resuelve

Recetas practicas de Docker Compose para levantar servicios, redes, volumenes, variables, healthchecks y diagnostico.

Archivo minimo

services:
  app:
    image: nginx:alpine
    ports:
      - "8080:80"

Comandos basicos

Levantar

docker compose up -d

Ver estado

docker compose ps

Ver logs

docker compose logs -f

Parar

docker compose down

Reconstruir

docker compose up -d --build

Variables de entorno

.env

APP_PORT=8080
APP_ENV=dev

Usar variables

services:
  app:
    image: nginx:alpine
    ports:
      - "${APP_PORT}:80"
    environment:
      APP_ENV: "${APP_ENV}"

Volumenes

Bind mount

services:
  app:
    image: nginx:alpine
    volumes:
      - ./html:/usr/share/nginx/html:ro

Volumen nombrado

services:
  db:
    image: postgres:16
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

Redes

Red interna

services:
  app:
    image: nginx:alpine
    networks:
      - internal

networks:
  internal:

Dos servicios comunicando por nombre

services:
  app:
    image: {APP_IMAGE}
    environment:
      DATABASE_URL: postgres://postgres:postgres@db:5432/app
  db:
    image: postgres:16

Healthcheck

services:
  app:
    image: nginx:alpine
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://localhost"]
      interval: 30s
      timeout: 5s
      retries: 3

Depends on

services:
  app:
    image: {APP_IMAGE}
    depends_on:
      db:
        condition: service_started
  db:
    image: postgres:16

depends_on ordena arranque, pero no sustituye reintentos en la aplicacion.

Perfiles

services:
  debug:
    image: nicolaka/netshoot
    profiles: ["debug"]

Levantar perfil

docker compose --profile debug up -d

Diagnostico

Entrar en contenedor

docker compose exec {SERVICE} sh

Ejecutar comando puntual

docker compose run --rm {SERVICE} {COMMAND}

Ver config renderizada

docker compose config

Ver consumo

docker stats

Variables

VariableDescripcion
{SERVICE}Nombre del servicio
{COMMAND}Comando a ejecutar
{APP_IMAGE}Imagen de la app

Errores comunes

SintomaCausa probableSolucion
Servicio no ve DBHost incorrectoUsa nombre de servicio, ej. db
Puerto ocupadoConflicto hostCambia lado izquierdo del mapeo
Cambios no aparecenImagen viejaup -d --build
Volumen conserva datos antiguosVolumen nombrado persistenteRevisa docker volume ls

Checklist final

  • .env no contiene secretos reales si se versiona.

  • Puertos externos minimos.

  • Volumenes nombrados para datos persistentes.

  • docker compose config antes de publicar.

  • Logs revisados tras arrancar.

- EOF -