Sobes.tech
Back to questions
Middle
570

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

Answer from AI

sobes.tech AI

Многоэтапные сборки (multi-stage builds) — это подход в Docker, позволяющий создавать несколько промежуточных образов в одном Dockerfile, чтобы оптимизировать итоговый образ.

Идея в том, что на первых этапах собирается приложение с полным набором инструментов и зависимостей (например, компиляторы, библиотеки для сборки), а на последнем этапе копируются только необходимые для запуска артефакты в минимальный образ.

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

  • Значительно уменьшается размер итогового образа.
  • Упрощается управление зависимостями.
  • Повышается безопасность за счёт исключения инструментов сборки из финального образа.

Пример Dockerfile с многоэтапной сборкой:

# Этап сборки
FROM ruby:3.0 AS builder
WORKDIR /app
COPY . .
RUN bundle install
RUN rake build

# Финальный этап
FROM ruby:3.0-slim
WORKDIR /app
COPY --from=builder /app/build /app
CMD ["ruby", "app.rb"]

Здесь на этапе builder происходит установка всех зависимостей и сборка, а в финальный образ попадает только готовое приложение без лишних инструментов.