К тренажеру
ВопросEasyproductionРеальный собес

Для чего нужен Docker multistage build

Интервьюер спрашивает: зачем в Dockerfile нужен multistage build и что он дает в production?

Короткий ответ

Multistage build разделяет этап сборки и финальный runtime image: в финальный образ попадает только нужный артефакт, без build tools, кешей и лишних зависимостей.

Полный разбор

В первом stage обычно ставятся build dependencies, компилируется приложение, собирается frontend или wheel. Во втором stage берется чистый runtime image, куда копируются только готовые артефакты и минимальные runtime dependencies.

Плюсы: меньше размер образа, меньше attack surface, быстрее pull/deploy, меньше случайных зависимостей в production. Для ML/DS это полезно, когда нужно не тащить компиляторы, dev headers, notebooks и временные файлы в serving image.

Важно понимать, что multistage build не заменяет нормальный dependency management, но помогает сделать production image компактнее и безопаснее.

Теория

Это production hygiene. На ML-интервью такой вопрос часто проверяет, способен ли кандидат доводить код до сервиса, а не только обучать модель в ноутбуке.

Типичные ошибки

  • Не отличать build image от runtime image.
  • Думать, что multistage нужен только для frontend.
  • Оставлять секреты или build cache в финальном образе.

Как отвечать на собеседовании

  • Отвечай через два этапа: build stage и runtime stage.
  • Назови benefits: image size, security, deploy speed.