Middle
¿Qué son las compilaciones de múltiples etapas en Docker y cómo funcionan?
sobes.tech AI
Respuesta de la IA
Las compilaciones multinivel permiten utilizar varias imágenes temporales durante el proceso de construcción de Docker para obtener una imagen final optimizada.
Cómo funciona:
- División en etapas: El proceso de construcción se divide en varias etapas (
FROM), cada una heredando de su imagen base. - Copia de artefactos: Los archivos y artefactos creados en etapas anteriores se copian a las siguientes mediante el comando
COPY --from=<nombre_de_etapa o número>. - Imagen final: La imagen final se crea a partir de la última etapa. Solo se incluyen los archivos que se copiaron explícitamente desde etapas anteriores. Las capas intermedias y las herramientas utilizadas en etapas tempranas para compilación o pruebas no se incluyen en la imagen final.
Ventajas:
- Reducción del tamaño de la imagen: Solo los archivos necesarios para ejecutar la aplicación se incluyen en la imagen final.
- Mejora de la seguridad: No se incluyen herramientas de compilación, compiladores u otros componentes potencialmente vulnerables en la imagen final.
- Aceleración de la construcción: Las etapas intermedias pueden ser almacenadas en caché.
- Limpieza del Dockerfile: Las diferentes etapas de construcción (compilación, prueba, empaquetado) están lógicamente separadas.
Ejemplo:
# Etapa de construcción: compilación de la aplicación
FROM golang:1.20 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o myapp .
# Etapa de ejecución: ejecución de la aplicación
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp /app/myapp
CMD ["/app/myapp"]