Sobes.tech
Back to questions
Middle+
6

Что такое multi-stage build и зачем он нужен?

Companies where asked
МВидео/эльдорадо

Answer from AI

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"]

Здесь на первом этапе происходит сборка приложения, а на втором — создаётся минимальный образ с только бинарником и необходимыми библиотеками.