Junior — Middle
Дар кадом ҳолатҳо тавсия дода мешавад, ки сохтани Docker бо чанд марҳила истифода шавад ва ин чӣ гуна кӯмак мекунад, ки равандро оптимизатсия кунад؟
sobes.tech AI
Ҷавоб аз AI
Мултистейджи сохтмони Docker тавсия дода мешавад, вақте ки лозим аст, ки тасвири кӯтоҳ ва оптимизатсияшударо созем, бо ҷудо кардани марҳилаҳои сохтмон ва иҷрои барнома. Масалан, дар марҳилаи аввал барнома бо ҳама воситаҳо ва вобастагиҳо ҷамъоварӣ мешавад, ва дар марҳилаи дуввум, тасвирҳои минималӣ сохта мешаванд, ки танҳо артефактҳои компилишуда дар он нусхабардорӣ мешаванд.
Ин кӯмак мекунад:
- андозаи тасвири ниҳоиро кам кардан, бо хориҷ кардани файлҳо ва воситаҳои сохтмонӣ;
- бехатариро баланд бардоштани, зеро дар тасвири ниҳоӣ воситаҳои таҳия нест;
- суръат бахшидани таҳия ва оғоз кардани контейнериҳо.
Маслиҳат барои Dockerfile бо сохтмони бисёрмарҳила:
# Марҳилаи сохтмон
FROM maven:3.8-jdk-11 AS builder
WORKDIR /app
COPY . .
RUN mvn clean package
# Марҳилаи иҷро
FROM openjdk:11-jre-slim
WORKDIR /app
COPY --from=builder /app/target/myapp.jar ./
CMD ["java", "-jar", "myapp.jar"]