~/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
| Variable | Descripcion |
|---|---|
{SERVICE} | Nombre del servicio |
{COMMAND} | Comando a ejecutar |
{APP_IMAGE} | Imagen de la app |
Errores comunes
| Sintoma | Causa probable | Solucion |
|---|---|---|
| Servicio no ve DB | Host incorrecto | Usa nombre de servicio, ej. db |
| Puerto ocupado | Conflicto host | Cambia lado izquierdo del mapeo |
| Cambios no aparecen | Imagen vieja | up -d --build |
| Volumen conserva datos antiguos | Volumen nombrado persistente | Revisa docker volume ls |
Checklist final
-
.envno contiene secretos reales si se versiona. -
Puertos externos minimos.
-
Volumenes nombrados para datos persistentes.
-
docker compose configantes de publicar. -
Logs revisados tras arrancar.
- EOF -