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 минималды образына көшіріледі.