Compilaciones multietapa para imágenes de producción ligeras
Domine los Dockerfiles multietapa para compilar o empaquetar su aplicación en una etapa de build y copiar únicamente los artefactos a una imagen de runtime diminuta.
Compilaciones multietapa para imágenes de producción ligeras es una lección gratuita de Docker & Kubernetes for Developers en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Docker & Kubernetes for Developers, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Docker & Kubernetes for Developers incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
The Fat Image Problem
A single-stage build often ships compilers, dev dependencies, and source code into production. The result is a large, slower-to-pull, larger-attack-surface image.
What Is a Multi-Stage Build
A multi-stage build uses several FROM statements in one Dockerfile. Earlier stages build artifacts; a final lean stage copies only what it needs to run.
A Go Multi-Stage Example
Compile in a Go image, then ship a tiny final image with just the binary.
FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN go build -o app .
FROM alpine:3.20
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]Copying From a Named Stage
The key line is COPY --from=build. It pulls the compiled app binary out of the build stage, leaving the Go toolchain behind.
A Node.js Multi-Stage Example
Install and build with dev deps, then copy only the production output.
FROM node:20 AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-slim
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY package*.json ./
RUN npm ci --omit=dev
CMD ["node", "dist/index.js"]Choosing a Slim Base
Final stages should use minimal bases like alpine, -slim, or distroless. Smaller bases mean fewer packages and fewer vulnerabilities.
Distroless Images
Google distroless images contain only your app and its runtime, no shell or package manager. They are very small and hard to exploit interactively.
FROM gcr.io/distroless/static-debian12
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]Targeting a Specific Stage
You can build only up to a named stage with --target, useful for running tests in CI.
docker build --target build -t myapp:test .Caching Dependencies
Copy dependency manifests before the rest of the source. Then dependency installation is cached and only re-runs when the manifest changes.
COPY package*.json ./
RUN npm ci
COPY . .Measuring the Win
Compare sizes before and after. Multi-stage builds commonly shrink images from hundreds of MB to tens of MB.
docker images myappCombining With .dockerignore
Add a .dockerignore so build context excludes node_modules, .git, and secrets, speeding builds and avoiding leaking files into images.
node_modules
.git
*.envQuick Check
Test what you have learned.
Recap
You learned to split Dockerfiles into build and runtime stages, copy only artifacts with --from, pick slim or distroless bases, target stages, and combine with .dockerignore for lean production images.
Aprende Docker & Kubernetes for Developers con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 12
- Lecciones
- 48
Preguntas frecuentes
¿La lección «Compilaciones multietapa para imágenes de producción ligeras» es gratis?
Sí — el texto completo de «Compilaciones multietapa para imágenes de producción ligeras» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Docker & Kubernetes for Developers, actualiza a CoddyKit PRO. El curso de Docker & Kubernetes for Developers incluye 4 lecciones en total.
¿Qué aprenderé en «Compilaciones multietapa para imágenes de producción ligeras»?
Domine los Dockerfiles multietapa para compilar o empaquetar su aplicación en una etapa de build y copiar únicamente los artefactos a una imagen de runtime diminuta. Practicas Docker & Kubernetes for Developers con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Docker & Kubernetes for Developers?
No se requiere experiencia previa. Docker & Kubernetes for Developers en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Compilaciones multietapa para imágenes de producción ligeras»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Docker & Kubernetes for Developers?
Sí. Cada lección de Docker & Kubernetes for Developers incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Contenerización de una aplicación web
- Optimización de imágenes Docker
- Seguridad y prácticas recomendadas para producción
- Compilaciones multietapa para imágenes de producción ligeras