Sobes.tech
Back to questions
Junior — Middle
83

Объясните концепцию многоступенчатой сборки Docker-образа и зачем она используется.

Companies where asked
AndersenAndersen

Answer from AI

sobes.tech AI

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

На первом этапе можно использовать образ с инструментами для компиляции и сборки приложения, а на последующих — только минимальный образ с необходимыми для запуска файлами.

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

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

Пример:

# Этап сборки
FROM openjdk:11-jdk AS build
WORKDIR /app
COPY . .
RUN ./gradlew build

# Этап выполнения
FROM openjdk:11-jre
WORKDIR /app
COPY --from=build /app/build/libs/myapp.jar ./
CMD ["java", "-jar", "myapp.jar"]