Initial commit with translated description

This commit is contained in:
2026-03-29 09:49:29 +08:00
commit 5327f55ce1
7 changed files with 338 additions and 0 deletions

43
images.md Normal file
View File

@@ -0,0 +1,43 @@
# Image Building Traps
## Layer Cache
- `COPY . .` antes de `RUN npm install` = cache invalidado en cada cambio de código
- `apt-get update` y `apt-get install` en RUNs separados = packages stale semanas después
- `--no-cache` en build borra TODO el cache — no solo del paso actual
- Cache de un stage no se usa en otro stage — multi-stage rebuild from scratch
## Multi-Stage
- `--from=builder` con typo = copia de stage equivocado silenciosamente
- `COPY --from=0` es primer stage, no stage llamado "0"
- Stage sin nombre + reorden de stages = `--from=N` apunta a stage diferente
- Files copiados de stage anterior pierden permisos — copiar con `--chmod`
## Base Images
- `python:latest` hoy ≠ `python:latest` mañana — builds no reproducibles
- `alpine` sin glibc = muchos binarios no funcionan — errores crípticos
- `slim` images sin shell tools = debugging imposible
- Imagen "latest" puede ser major version diferente — breaking changes
## COPY vs ADD
- `ADD` con URL descarga pero no cachea — rebuild = re-download
- `ADD` con .tar.gz extrae automáticamente — sorpresa si no lo esperabas
- `COPY` no expande wildcards como shell — `COPY *.json ./` puede no hacer lo que esperas
- `.dockerignore` ignorado en builds remotos (docker build - < Dockerfile)
## ARG vs ENV
- `ARG` no disponible después de `FROM` — cada stage necesita re-declarar
- `ARG` con valor default + override vacío = usa el default, no vacío
- `ARG` visible en `docker history` — no para secrets
- `ENV` persiste en runtime — `ARG` solo en build
## Size Traps
- `rm -rf /var/lib/apt/lists` en RUN separado = espacio no recuperado (layers)
- `npm install --production` después de `npm install` = dev dependencies todavía en layer anterior
- `.git` copiado = megas extra si no hay .dockerignore
- Múltiples `RUN apt-get` = cada uno es layer con cache de apt