Middle
123
questionbank

Что такое многоэтапные сборки (multi-stage builds)?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Многоэтапные сборки в Docker позволяют создать более эффективные образы, разделяя процесс сборки на несколько этапов с использованием разных базовых образов.

Преимущества:

  • Уменьшение размера образа: Промежуточные этапы, содержащие инструменты и исходники для сборки, не попадают в финальный образ.
  • Повышенная безопасность: Финальный образ содержит только то, что необходимо для запуска приложения.
  • Улучшение кэширования: Изменения в коде или зависимостях затрагивают только соответствующие этапы сборки, что ускоряет процесс.

Принцип работы:

Используется две и более директив FROM в одном Dockerfile. Каждый FROM определяет отдельный этап сборки. Данные и артефакты копируются между этапами с помощью директивы COPY --from=<имя_этапа_или_номер>.

dockerfile

В этом примере первый этап builder собирает приложение, включая установку гемов. Второй этап использует легковесный образ ruby:3.2-slim и копирует только собранные артефакты с этапа builder.