Back to questions
Middle
571
Что такое многоэтапные сборки (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 происходит установка всех зависимостей и сборка, а в финальный образ попадает только готовое приложение без лишних инструментов.