Что такое Multi-stage сборка образа

«Что такое Multi-stage сборка образа» — вопрос из категории DevOps, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Multi-stage сборка позволяет использовать несколько FROM инструкций в одном Dockerfile, где каждая стадия начинается с нового базового образа. Это помогает уменьшить итоговый размер образа, оставляя только необходимые артефакты.

Пример:

# Стадия сборки
FROM golang:1.21 as builder
WORKDIR /app
COPY . .
RUN go build -o myapp

# Финальная стадия
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /app/myapp .
CMD ["./myapp"]

Ключевые преимущества:

  • Уменьшение размера образа (не включаются инструменты сборки)
  • Повышение безопасности (меньше слоёв и уязвимостей)
  • Чистота (только нужные файлы в итоговом образе)

Используй COPY --from для переноса файлов между стадиями.