Junior — Middle
Կարող եք բացատրել Docker-ում բազմահարթակային հավաքման սկզբունքը և ինչու է այն կիրառվում:
sobes.tech AI
Պատասխան AI-ից
Դոկերում բազմաբնակարան (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-ով, իսկ հետո նվազագույն պատկերում՝ JRE-ով՝ պատճենվում է միայն պատրաստի jar ֆայլը։