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

Можете объяснить концепцию многоэтапной сборки образов в Docker и в чем её преимущества?

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

sobes.tech AI

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

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

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

Пример:

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

# Финальный образ
FROM openjdk:11-jre-slim
WORKDIR /app
COPY --from=build /app/target/myapp.jar ./myapp.jar
CMD ["java", "-jar", "myapp.jar"]

Здесь сначала происходит сборка приложения с помощью Maven, а затем в финальный образ копируется только скомпилированный jar, без Maven и исходников.