Sobes.tech
Back to questions
Senior
3

Про multistage build — что это и зачем нужно?

Companies where asked
МВидеоМВидео

Answer from AI

sobes.tech AI

Multistage build — это техника в Docker, позволяющая использовать несколько этапов сборки в одном Dockerfile. Основная идея — разделить процесс сборки на несколько шагов, где на первых этапах происходит компиляция или подготовка артефактов, а на финальном этапе создаётся минимальный образ, содержащий только необходимые для запуска файлы.

Зачем это нужно:

  • Уменьшение размера итогового Docker-образа, так как в финальный образ не попадают промежуточные файлы и инструменты сборки.
  • Повышение безопасности — в конечном образе отсутствуют инструменты разработки.
  • Ускорение сборки и деплоя за счёт меньшего объёма данных.

Пример Dockerfile с multistage build для 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"]

Таким образом, multistage build позволяет создавать компактные и оптимизированные образы без лишних зависимостей.