Back to questions
Aston
Middle+
4
Что такое multi-stage build в Docker и зачем он нужен?
Companies where asked
Answer from AI
sobes.tech AI
Multi-stage build в Docker — это техника, позволяющая использовать несколько этапов сборки в одном Dockerfile. Основная идея — разделить процесс сборки на несколько шагов, где на первых этапах происходит компиляция или подготовка артефактов, а на финальном этапе создаётся минимальный образ, содержащий только необходимые для запуска файлы.
Зачем это нужно:
- Уменьшение размера итогового образа, так как не включаются инструменты сборки и временные файлы.
- Повышение безопасности, так как в финальном образе нет лишних утилит и исходников.
- Удобство поддержки и читаемость 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"]
Здесь на первом этапе собирается бинарник, а на втором — создаётся лёгкий образ с только этим бинарником.