Sobes.tech
Middle

Docker'da çok aşamalı derlemeler nedir ve nasıl çalışırlar?

sobes.tech yapay zeka

AI'dan gelen yanıt

Çok aşamalı derlemeler, Docker derleme sürecinde birkaç geçici görüntü kullanarak son, optimize edilmiş görüntüyü elde etmek için olanak tanır.

Nasıl çalışır:

  • Aşamaların bölünmesi: Derleme süreci, her biri kendi temel görüntüsünden türeyen (FROM) birkaç aşamaya bölünür.
  • Artefaktların kopyalanması: Önceki aşamalarda oluşturulan dosyalar ve artefaktlar, COPY --from=<aşama_adı veya numarası> komutuyla sonraki aşamalara kopyalanır.
  • Son görüntü: Son görüntü, en son aşamadan oluşturulur. Sadece önceki aşamalardan açıkça kopyalanan dosyalar dahil edilir. Orta katmanlar ve erken aşamalarda derleme veya testler için kullanılan araçlar dahil edilmez.

Avantajlar:

  • Görüntü boyutunun azaltılması: Sadece uygulamayı çalıştırmak için gereken dosyalar son görüntüye dahil edilir.
  • Güvenliğin artırılması: Derleme araçları, derleyiciler ve diğer potansiyel olarak savunmasız bileşenler son görüntüye dahil edilmez.
  • Derleme hızlandırması: Orta aşamalar önbelleğe alınabilir.
  • Dockerfile temizliği: Derleme (derleme, test, paketleme) aşamaları mantıksal olarak ayrılmıştır.

Örnek:

# Derleme aşaması: uygulamanın derlenmesi
FROM golang:1.20 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o myapp .

# Çalıştırma aşaması: uygulamanın çalıştırılması
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp /app/myapp
CMD ["/app/myapp"]