Junior — Middle
შეგიძლიათ ახსნათ Docker-ში მრავალსაფეხურიანი სურათების მშენებლობის კონცეფცია და რა სარგებელს მოაქვს მას?
sobes.tech AI
პასუხი AI-სგან
Docker-ში მრავალსაფეხურიანი (multi-stage build) საშუალებას გაძლევთ შექმნათ სურათები რამდენიმე ნაბიჯით, გამოყენებით შუამავლობით სურათებს მშენებლობისთვის და შემდეგ მხოლოდ საჭირო არტეფაქტების კოპირებით საბოლოო სურათში.
უპირატესობები:
- საბოლოო სურათის ზომის შემცირება — მხოლოდ ის, რაც საჭიროა გაშვებისთვის, მშენებლობის ინსტრუმენტებისა და დროებითი ფაილების გარეშე.
- უსაფრთხოების გაზრდა — ნაკლები კომპონენტები, ნაკლები სუსტი წერტილები.
- სარგებელი და სისუფთავე — მშენებლობის და გაშვების ეტაპების განყოფილება შესაძლებელია, მრავალი 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-ის და წყაროს ფაილების გარეშე.