Sobes.tech
Middle

Docker-də çox mərhələli yığmalar nədir və necə işləyirlər?

sobes.tech Süni İntellekt

AI-dan cavab

Çox mərhələli yığmalar Docker yığma prosesində bir neçə müvəqqəti görüntüdən istifadə etməyə imkan verir ki, bu da son, optimallaşdırılmış görüntünü əldə etmək üçün.

Necə işləyir:

  • Mərhələlərə bölünmə: Yığma prosesi bir neçə mərhələyə bölünür (FROM), hər biri öz əsas görüntüsündən irs götürür.
  • Artefaktların köçürülməsi: Əvvəlki mərhələlərdə yaradılmış fayllar və artefaktlar COPY --from=<mərhələ adı və ya nömrəsi> əmri ilə növbəti mərhələlərə köçürülür.
  • Yekun görüntü: Yekun görüntü ən son mərhələyə əsasən yaradılır. Yalnız əvvəlki mərhələlərdən açıq şəkildə köçürülən fayllar daxil edilir. Aralıq qatlar və erkən mərhələlərdə istifadə olunan alətlər yekun görüntüyə daxil edilmir.

Üstünlüklər:

  • Görüntü ölçüsünün azaldılması: Yekun görüntüyə yalnız tətbiqin işləməsi üçün lazım olan fayllar daxil edilir.
  • Təhlükəsizliyin artırılması: Yığma alətləri, tərtibçilər və digər potensial zəif komponentlər yekun görüntüyə daxil edilmir.
  • Yığmanın sürətləndirilməsi: Aralıq qatlar keşikdə qala bilər.
  • Dockerfile-in təmizliyi: Müxtəlif yığma mərhələləri (tərtib, test, paketləmə) məntiqi olaraq ayrılmışdır.

Nümunə:

# Yığma mərhələ: tətbiqin tərtibi
FROM golang:1.20 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o myapp .

# İşə salma mərhələsi: tətbiqin işə salınması
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp /app/myapp
CMD ["/app/myapp"]