0Pricing
Docker & DevOps Fundamentals · Lección

Builds multietapa e imágenes más pequeñas

Aprenda cómo los Dockerfiles multietapa permiten distribuir imágenes de producción ligeras separando las herramientas de compilación del entorno de ejecución final y reduciendo notablemente su tamaño.

Builds multietapa e imágenes más pequeñas es una lección gratuita de Docker & DevOps Fundamentals 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 & DevOps Fundamentals, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Docker & DevOps Fundamentals incluye 4 lecciones en total.

Por qué importa el tamaño de la imagen

Las imágenes grandes tardan más en compilarse, enviarse y descargarse, y tienen una mayor superficie de ataque. Un buen objetivo de ingeniería es distribuir la imagen más pequeña que aún pueda ejecutar su aplicación.

El problema del exceso de contenido

Para compilar una aplicación suelen necesitarse compiladores, dependencias de desarrollo y herramientas de compilación. Si terminan en la imagen final, esta aumenta mucho de tamaño, aunque la aplicación en ejecución no necesite ninguno de ellos.

¿Qué es una compilación en varias etapas?

Una compilación en varias etapas utiliza varias instrucciones FROM en un mismo Dockerfile. Las primeras etapas compilan la aplicación; la etapa final copia únicamente los artefactos terminados y deja atrás las herramientas de compilación.

Asignar un nombre a una etapa

Asigne un nombre a una etapa con AS para que las etapas posteriores puedan hacer referencia a ella.

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

Compilar en la primera etapa

La etapa de compilación compila o empaqueta su aplicación. Aquí están disponibles todas las dependencias de desarrollo y las herramientas.

COPY . .
RUN npm run build

Una etapa final ligera

Inicie la etapa final a partir de una imagen base mínima y copie solo lo que la aplicación necesita para ejecutarse mediante COPY --from.

FROM node:20-slim
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules

Dockerfile completo en varias etapas

Al combinar las etapas se obtiene una imagen final pequeña que contiene la aplicación compilada, pero ninguna de las herramientas de compilación.

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

FROM node:20-slim
WORKDIR /app
COPY --from=builder /app/dist ./dist
CMD ['node', 'dist/main.js']

Elegir una imagen base pequeña

La imagen base suele ser el factor más importante. Las variantes slim y Alpine reducen considerablemente el tamaño de las imágenes:

  • node:20 ~ grande
  • node:20-slim ~ mucho más pequeña
  • node:20-alpine ~ la más pequeña, con bibliotecas mínimas

Dependencias solo para producción

Omita las dependencias de desarrollo en la imagen de ejecución. Instalar con la opción de producción mantiene fuera los paquetes de pruebas y compilación.

RUN npm ci --omit=dev

Usar .dockerignore

Un archivo .dockerignore mantiene la basura fuera del contexto de compilación, acelera las compilaciones y evita copiar accidentalmente secretos o carpetas enormes.

node_modules
.git
.env
Dockerfile
*.log

Medir el resultado

Verifique su trabajo comprobando el tamaño de las imágenes. Una imagen en varias etapas bien construida puede ocupar una fracción de lo que ocupa una imagen sencilla de una sola etapa.

docker images myapp

Comprobación rápida

Compruebe sus conocimientos sobre las compilaciones en varias etapas.

Resumen

Ha aprendido a distribuir imágenes Docker ligeras:

  • Las compilaciones en varias etapas utilizan varias etapas FROM en un mismo Dockerfile
  • Compile en una etapa inicial y, después, use COPY --from para copiar únicamente los artefactos a una etapa final ligera
  • Elija imágenes base pequeñas (slim/Alpine) e instale solo las dependencias de producción
  • Use .dockerignore para reducir el contexto de compilación

Las imágenes más pequeñas se compilan más rápido, se implementan antes y son más seguras.

Preguntas frecuentes

¿La lección «Builds multietapa e imágenes más pequeñas» es gratis?

Sí — el texto completo de «Builds multietapa e imágenes más pequeñas» 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 & DevOps Fundamentals, actualiza a CoddyKit PRO. El curso de Docker & DevOps Fundamentals incluye 4 lecciones en total.

¿Qué aprenderé en «Builds multietapa e imágenes más pequeñas»?

Aprenda cómo los Dockerfiles multietapa permiten distribuir imágenes de producción ligeras separando las herramientas de compilación del entorno de ejecución final y reduciendo notablemente su tamaño. Practicas Docker & DevOps Fundamentals 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 & DevOps Fundamentals?

No se requiere experiencia previa. Docker & DevOps Fundamentals 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 «Builds multietapa e imágenes más pequeñas»?

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 & DevOps Fundamentals?

Sí. Cada lección de Docker & DevOps Fundamentals 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

  1. Comprensión de los Dockerfiles
  2. Creación de imágenes de Docker personalizadas
  3. Capas y optimización de imágenes
  4. Builds multietapa e imágenes más pequeñas
← Volver a Docker & DevOps Fundamentals