Ответ
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 для переноса файлов между стадиями.