Sobes.tech
Junior — Middle

Docker-да көпқадамды жинақтау принципін түсіндіріп бересіз бе және ол не үшін қолданылады?

sobes.tech AI

AI-дан жауап

Docker-да көп сатылы құрастыру (multi-stage build) соңғы образдың өлшемін азайтуға және қауіпсіздікті жақсартуға көмектесетін бірнеше кезеңде образдар жасауға мүмкіндік береді.

Идеясы — алғашқы кезеңдерде барлық қажетті құралдар мен тәуелділіктерді пайдаланып қосымшаны жинау және компиляциялау, ал соңғы кезеңде іске қосу үшін қажет файлдар ғана минималды базалық образға көшіріледі.

Артықшылықтары:

  • Жинау құралдарын шығарып тастау арқылы соңғы образдың өлшемін азайту.
  • Қауіпсіздікті арттыру, себебі соңғы образда артық құралдар болмайды.
  • Dockerfile-ді жеңілдету, себебі барлық кезеңдер бір файлда сипатталады.

Мысал:

# Құрастыру кезеңі
FROM openjdk:17-jdk AS build
WORKDIR /app
COPY . .
RUN ./gradlew build

# Іске қосу кезеңі
FROM openjdk:17-jre
WORKDIR /app
COPY --from=build /app/build/libs/myapp.jar ./
CMD ["java", "-jar", "myapp.jar"]

Мұнда алдымен JDK көмегімен қосымша құрастырылады, содан кейін дайын jar-файл тек JRE минималды образына көшіріледі.