Sobes.tech
Назад к вопросам
Junior — Middle
72

Какие преимущества дает использование многоэтапной сборки в Docker и для чего она применяется?

Ответ от нейросети

sobes.tech AI

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

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

Применяется для создания оптимизированных, компактных и безопасных контейнеров, особенно когда процесс сборки требует тяжелых инструментов, которые не нужны в продакшене.

Пример:

# Этап сборки
FROM maven:3.8-jdk-11 AS builder
WORKDIR /app
COPY . .
RUN mvn clean package

# Финальный этап
FROM openjdk:11-jre-slim
COPY --from=builder /app/target/myapp.jar /app/myapp.jar
CMD ["java", "-jar", "/app/myapp.jar"]