Multi-stage build отделяет среду сборки от среды запуска. В первом этапе находятся компиляторы и зависимости сборки, во второй копируются только необходимые runtime-артефакты.
Зачем в Dockerfile используются два базовых образа и несколько этапов, а не одна сборка?
Multi-stage build отделяет среду сборки от среды запуска. В первом этапе находятся компиляторы и зависимости сборки, во второй копируются только необходимые runtime-артефакты.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Multi-stage build отделяет среду сборки от среды запуска. В первом этапе находятся компиляторы и зависимости сборки, во второй копируются только необходимые runtime-артефакты.
Это уменьшает итоговый образ и набор лишних инструментов. Два этапа могут использовать разные базовые образы, если полученный артефакт совместим с runtime: учитывайте архитектуру, системные библиотеки и libc. Несколько FROM создают отдельные стадии, а не просто добавляют все содержимое первой во вторую.