Назад к вопросам
Junior — Middle
77
Каким образом реализовать многоступенчатую сборку образа контейнера?
Ответ от нейросети
sobes.tech AI
Многоступенчатая сборка (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, а затем в финальный образ копируется только скомпилированный бинарник, без исходников и инструментов сборки.