1.8 KiB
1.8 KiB
Compose Traps
depends_on
depends_on: [db]espera que CONTAINER arranque — no que servicio esté readycondition: service_healthyrequiere healthcheck definido — sin él, falla silenciosamente- Circular dependency no es error — compose intenta resolver y puede fallar random
- depends_on no afecta
docker compose run— servicios dependency no arrancan
Environment
.envdebe estar junto adocker-compose.yml— en subdirectorio no se lee${VAR}undefined = string vacío, no error — bugs silenciosos${VAR:-default}solo aplica si VAR undefined — VAR="" usa vacío, no defaultenv_fileno acepta export syntax —export VAR=xfalla
Volumes
- Volume mount sobre directorio con archivos = archivos del container desaparecen
- Bind mount de directorio host vacío = directorio container vacío
./pathrelativo al compose file, no al cwd- Named volume primera vez copia contenido del container — después no
Networks
- Default bridge no tiene DNS entre containers — nombres no resuelven
- Container name ≠ service name — usar service name para DNS
network_mode: hostdesactiva toda la red de compose — no solo para ese container- External network no se crea automáticamente — debe existir
Build
build: .usa Dockerfile,build: { dockerfile: X }para otro nombre- Build context se envía completo al daemon — directorio grande = build lento
image:+build:juntos = build y tag con ese nombre- Cache de build no se comparte entre diferentes compose projects por defecto
Healthcheck
- Healthcheck en compose override el del Dockerfile
start_periodno cuenta para retries — primeros N segundos ignora fallostest: ["CMD", "curl", ...]— CMD usa exec, CMD-SHELL usa shell- Exit code 0 = healthy, 1 = unhealthy, 2 = reserved (don't use)