Junior — Middle
Comment réaliser une construction multi-étapes d'une image de conteneur?
sobes.tech IA
Réponse de l'IA
Многоступенчатая сборка (multi-stage build) в Docker позволяет создавать несколько этапов сборки в одном Dockerfile, что помогает уменьшить размер итогового образа и отделить этапы компиляции от этапа запуска.
Основная идея — использовать несколько инструкций FROM в одном Dockerfile, где каждый следующий этап может использовать артефакты предыдущих.
Пример:
# Этап сборки
FROM golang:1.20 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
# Этап финального образа
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp .
CMD ["./myapp"]
Здесь сначала собирается приложение на Go, а затем в финальный образ копируется только скомпилированный бинарник, без исходников и инструментов сборки.