Назад к вопросам
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 и исходников.