Middle
Hansı hallarda çox mərhələli (multi-stage) yığma istifadə olunur?
sobes.tech Süni İntellekt
AI-dan cavab
Docker-də çox mərhələli quruluş (multi-stage build) aşağıdakı hallarda istifadə olunur:
- Yekun görüntünün ölçüsünü azaltmaq: Quruluşun ilk (və ya müvəqqəti) mərhələsində tərtib, test və ya digər quruluş mərhələləri üçün lazım olan alətlər yerləşir (məsələn, tərtibçi, quruluş asılılıqları). İkinci (yekun) mərhələdə isə yalnız tətbiqin işləməsi üçün lazım olan artefaktlar (tərtib olunmuş kod, icra edilə bilən fayllar, işləmə vaxtı kitabxanaları) kopyalanır. Bu, yekun görüntüyə lazımsız asılılıqları və quruluş alətlərini daxil etməməyə imkan verir və onun ölçüsünü əhəmiyyətli dərəcədə azaldır.
- Quruluş və işə salma mərhələlərinin ayrılması: Aydın ayrım quruluş prosesini və onun xətalarını tapmağı asanlaşdırır. Kodun tərtibi, testlərin keçirilməsi, linting və yalnız sonra hazır tətbiqlə yekun görüntünün yaradılması üçün mərhələlər ola bilər.
- Təhlükəsizliyin artırılması: Yekun görüntü minimal zəruri komponentləri ehtiva edir, bu da hücum sahəsini azaldır. Quruluş alətləri və mənbə kodu, təhlükəsizlik zəiflikləri ehtiva edə bilənlər, istehsalda istifadə olunan görüntüyə daxil edilmir.
- Quruluşin sürətləndirilməsi (bəzən): Müvəqqəti görüntülər keşlənə bilər və yalnız son mərhələlərdə dəyişikliklər olduqda, bütün görüntünü sıfırdan yenidən qurmağa ehtiyac qalmır.
- Quruluş prosesinin vahidləşdirilməsi: Tətbiqin qurulması və Docker görüntüsünün yaradılması bir avtomatlaşdırılmış prosesə çevrilir və CI/CD boru xətləri sadələşdirilir.
Go tətbiqi üçün nümunə:
# Quruluş mərhələsi
FROM golang:1.20-alpine AS builder
WORKDIR /app
COPY . .
# İcra edilə bilən faylın qurulması
RUN go build -ldflags="-s -w" -o myapp .
# Yekun mərhələ
FROM alpine:latest
WORKDIR /app
# Yalnız əvvəlki mərhələdən icra edilə bilən faylı kopyalayırıq
COPY --from=builder /app/myapp .
# Tətbiqi işə salmaq üçün əmr
CMD ["./myapp"]