Featured image of post Multi-stage builds de Docker: Imágenes más ligerasFeatured image of post Multi-stage builds de Docker: Imágenes más ligeras

Multi-stage builds de Docker: Imágenes más ligeras

Learn how to separate compile-time tools from production runtimes using Docker multi-stage builds to optimize container footprints and security.

Multi-stage builds usan múltiples instrucciones FROM en un solo Dockerfile. Cada etapa puede usar una base diferente, copiando solo los artefactos necesarios a la etapa final.

Ejemplo Node.js

FROM node:20 AS build
WORKDIR /app
COPY package*.json .
RUN npm ci
COPY . .
RUN npm run build

FROM node:20-slim
COPY --from=build /app/dist ./dist
CMD ["node", "dist/index.js"]

Beneficios

Reduce la imagen final de ~1GB a ~150MB. Elimina herramientas de compilación, dependencias de desarrollo y archivos temporales.

Etapas con nombres

Nombra las etapas (AS nombre) para referencia clara. Puedes tener etapas para: instalación, compilación, tests, y producción.

Estrategias avanzadas

Etapas paralelas para compilación de frontend y backend. Usa bases -slim o -alpine para la etapa final. Distroless para máxima seguridad.