Initial commit with translated description
This commit is contained in:
43
compose.md
Normal file
43
compose.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# Compose Traps
|
||||
|
||||
## depends_on
|
||||
|
||||
- `depends_on: [db]` espera que CONTAINER arranque — no que servicio esté ready
|
||||
- `condition: service_healthy` requiere 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
|
||||
|
||||
- `.env` debe estar junto a `docker-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 default
|
||||
- `env_file` no acepta export syntax — `export VAR=x` falla
|
||||
|
||||
## Volumes
|
||||
|
||||
- Volume mount sobre directorio con archivos = archivos del container desaparecen
|
||||
- Bind mount de directorio host vacío = directorio container vacío
|
||||
- `./path` relativo 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: host` desactiva 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_period` no cuenta para retries — primeros N segundos ignora fallos
|
||||
- `test: ["CMD", "curl", ...]` — CMD usa exec, CMD-SHELL usa shell
|
||||
- Exit code 0 = healthy, 1 = unhealthy, 2 = reserved (don't use)
|
||||
Reference in New Issue
Block a user