Назад к вопросам
Middle+
7
Что такое multi-stage build и зачем он нужен?
Компании, где спрашивали
МВидео/эльдорадо
Ответ от нейросети
sobes.tech AI
Multi-stage build — это техника в Docker, позволяющая использовать несколько этапов сборки в одном Dockerfile. Основная идея — разделить процесс сборки на несколько шагов, где на первых этапах происходит компиляция и подготовка артефактов, а на финальном этапе создаётся минимальный образ, содержащий только необходимые для запуска файлы.
Зачем это нужно:
- Уменьшение размера итогового Docker-образа, так как не включаются инструменты сборки и промежуточные файлы.
- Повышение безопасности, так как в финальном образе нет лишних инструментов.
- Упрощение поддержки и читаемости Dockerfile, так как все этапы описаны последовательно.
Пример для Go:
# Этап сборки
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"]
Здесь на первом этапе происходит сборка приложения, а на втором — создаётся минимальный образ с только бинарником и необходимыми библиотеками.