Sobes.tech
Назад к вопросам
Middle+
5

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

Компании, где спрашивали
AstonAston

Ответ от нейросети

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

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