Construcción multi-etapa
Técnica de Dockerfile con varias etapas de construcción: se compila en una etapa "build" pesada y luego se copia solo el artefacto final a una etapa final limpia y mínima. Resultado: una imagen de producción pequeña y segura, sin herramientas de compilación ni código fuente.
Problema: compilar requiere compiladores, herramientas de build y dependencias — pero nada de eso hace falta (ni debería estar) en producción, donde solo infla la imagen y aumenta la superficie de ataque. Multi-stage lo resuelve: una primera etapa (p. ej. FROM golang AS build) compila; una segunda etapa mínima (FROM alpine o distroless) hace solo COPY --from=build del binario terminado. Toda la basura de la construcción se queda en la etapa build y nunca llega a la imagen final. Ventaja: imágenes drásticamente más pequeñas (una app en Go puede pasar de ~800 MB a ~10 MB), menor superficie de ataque (sin compilador ni shell que un atacante pueda explotar), y ningún rastro filtrado de código fuente o secretos del proceso de build. Práctica estándar hoy para contenedores de producción, a menudo junto con una base distroless. Relacionado con distroless y las capas de imagen.