Sobes.tech
Middle

Чӣ тавр сохтани бисёрмарҳила дар Docker кор мекунад ва онҳо чӣ гуна кор мекунанд?

sobes.tech AI

Ҷавоб аз AI

Бисёрҳуҷраии сохтмон имкон медиҳад, ки дар равандҳои сохтмони Docker чанд тасвири муваққатӣ истифода шаванд, то тасвири ниҳоии оптималӣ ба даст ояд.

Чӣ гуна кор мекунад:

  • Тартиб додани ба марҳилаҳо: Раванди сохтмон ба чанд марҳила (FROM) тақсим мешавад, ҳар яке аз онҳо аз тасвири асосии худ мерос мегирад.
  • Копиркунии артефактҳо: Файлҳо ва артефактҳое, ки дар марҳилаҳои қаблӣ сохта шудаанд, бо фармони COPY --from=<номи марҳила ё рақам> ба марҳилаҳои оянда кӯчонида мешаванд.
  • Тасвири ниҳоӣ: Тасвири ниҳоӣ аз рӯи марҳилаи охирин сохта мешавад. Он танҳо файлҳое, ки ба таври ошкоро аз марҳилаҳои қаблӣ кӯчонида шудаанд, дар бар мегирад. Қатламҳои миёна ва асбобҳое, ки дар марҳилаҳои аввал барои компилятсия ё озмоиш истифода шудаанд, дар тасвири ниҳоӣ дохил намешаванд.

Фоидаҳо:

  • Кам кардани андозаи тасвир: Дар тасвири ниҳоӣ танҳо файлҳое дохил мешаванд, ки барои иҷрои барнома заруранд.
  • Беҳтар кардани бехатарӣ: Асбобҳои сохтмон, компиляторҳо ва дигар компонентҳои эҳтимолан осебпазир дар тасвири ниҳоӣ дохил намешаванд.
  • Тезтар сохтмон кардан: Қатламҳои миёна метавонанд кеш шаванд.
  • Тоза кардани Dockerfile: Марҳилаҳои сохтмон (компилятсия, озмоиш, бастабандӣ) мантиқан ҷудо шудаанд.

Масалан:

# Марҳилаи сохтмон: компилятсияи барнома
FROM golang:1.20 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o myapp .

# Марҳилаи иҷро: оғоз кардани барнома
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp /app/myapp
CMD ["/app/myapp"]