0Pricing
Docker & DevOps Fundamentals · Ders

Verimlilik için Çok Aşamalı Derlemeler

Derleme ve çalışma zamanı bağımlılıklarını ayırarak daha küçük ve güvenli üretim imajları oluşturmak için çok aşamalı derlemelerden yararlanın.

Verimlilik için Çok Aşamalı Derlemeler, CoddyKit'te ücretsiz bir Docker & DevOps Fundamentals dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Docker & DevOps Fundamentals öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Docker & DevOps Fundamentals kursu toplamda 4 dersten oluşur.

Çok Aşamalı Derlemelere Giriş

Gelişmiş Dockerfile optimizasyonuna hoş geldiniz! Bugün daha küçük ve daha verimli Docker görüntüleri oluşturmanızı sağlayan güçlü bir teknik olan çok aşamalı derlemeleri inceleyeceğiz.

Daha küçük görüntüler daha hızlı indirme, daha iyi güvenlik ve kaynakların daha verimli kullanılmasını sağlar.

Verimlilik için Çok Aşamalı Derlemeler — resim 1

Daha Küçük Görüntüler Neden Önemlidir?

Bir Docker görüntüsü oluşturduğunuzda görüntüde genellikle yalnızca derleme işlemi sırasında gereken, son uygulamanın çalışma zamanı için gerekmeyen araçlar ve bağımlılıklar da bulunur.

  • Daha hızlı çekme: Daha küçük görüntüler daha hızlı indirilir.
  • Daha az disk alanı: Kayıt defterlerinde ve ana bilgisayarlarda depolama alanından tasarruf sağlar.
  • Azaltılmış saldırı yüzeyi: Daha az bileşen, daha az olası güvenlik açığı anlamına gelir.
  • Geliştirilmiş güvenlik: Üretim görüntünüz yalnızca gerekli olanları içerir.

Tek Aşama Sorunu

Go ile yazılmış bir uygulama gibi derlenmiş bir uygulamayı düşünün. Geleneksel, tek aşamalı bir Dockerfile, Go derleyicisinin tamamını ve geliştirme bağımlılıklarını son görüntüye ekler.

Derlenmiş ikili dosyayı çalıştırmak için derleyici gerekmediğinden son görüntü gereğinden çok daha büyük olur.

Tek Aşamalı Örnek (Go)

Aşağıda tek aşamada oluşturulan basit bir Go uygulaması ve Dockerfile yer alıyor. Derleme ortamının son görüntüye nasıl dahil edildiğine dikkat edin.

main.go:

package main

import "fmt"

func main() {
    fmt.Println("Hello from Single-Stage Docker!")
}

Tek Aşamalı Dockerfile

Bu Dockerfile temel olarak `golang:1.21-alpine` kullanır. Uygulama oluşturulduktan sonra bu büyük temel görüntü, tüm derleme araçlarıyla birlikte son görüntüde kalır.

FROM golang:1.21-alpine
WORKDIR /app
COPY main.go .
RUN go build -o myapp main.go
EXPOSE 8080
CMD ["./myapp"]

Çok Aşamalı Derlemelerin Yapısı

Çok aşamalı derlemeler, tek bir Dockerfile içinde birden çok `FROM` yönergesi tanımlamanıza olanak tanıyarak bu sorunu çözer. Her `FROM` yeni bir derleme aşaması başlatır.

  • Bir aşamayı adlandırmak için AS anahtar sözcüğünü kullanın (örneğin, FROM golang:1.21-alpine AS builder).
  • Daha sonra COPY --from=<stage_name> kullanarak önceki bir aşamadaki derleme çıktılarını kopyalayabilirsiniz.

Görüntü olarak yalnızca son aşama kaydedilir.

Çok Aşamalı Yapı

Tipik bir çok aşamalı Dockerfile en az iki aşamaya sahiptir:

  • Derleme Aşaması: Uygulamanızı derlemek için gereken tüm araçları ve kaynak kodunu içerir.
  • Çalışma Zamanı Aşaması: Yalnızca derlenmiş uygulamayı ve çalışma zamanı bağımlılıklarını içeren minimal bir temel görüntüdür.

Derleme aşamasının ara görüntüsü atılır ve geriye yalın bir son görüntü kalır.

Çok Aşamalı Örnek (Go)

Go uygulamamızın Dockerfile dosyasını çok aşamalı bir yaklaşımla yeniden yazalım. Uygulamayı ilk aşamada derleyecek, ardından yalnızca derlenmiş ikili dosyayı çok daha küçük bir `alpine` temel görüntüsüne kopyalayacağız.

# Stage 1: Build the application
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY main.go .
RUN go build -o myapp main.go

# Stage 2: Create the final lightweight image
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp .
EXPOSE 8080
CMD ["./myapp"]

Çok Aşamalı Derlemeyi Çalıştırma

Bu Dockerfile'ı oluşturduğunuzda Docker her aşamayı yürütür. Ancak önceki aşamalardan kopyalanan dosyalarla birleştirilen yalnızca son `FROM` yönergesinin içeriği son görüntüyü oluşturur.

Go derleyicisi ve derleme araçları geride bırakıldığından bu yöntem, tek aşamalı derlemeye kıyasla çok daha küçük bir görüntü elde edilmesini sağlar.

Çok Aşamalı Derlemelerin Avantajları

Çok aşamalı derlemeler şu durumlarda son derece kullanışlıdır:

  • Derlenen Diller: Go, Java, C++, Rust.
  • Ön Yüz Çatıları: React/Angular uygulamalarını oluşturmak ve statik varlıkları Nginx ile sunmak.
  • Node.js Uygulamaları: `node_modules` öğesini bir derleme aşamasında kurup yalnızca `package.json`, `package-lock.json` ve oluşturulan uygulamayı yalın bir çalışma zamanı görüntüsüne kopyalamak.

Bilginizi Kontrol Edin

Aşağıdakilerden hangileri çok aşamalı Docker derlemelerini kullanmanın temel avantajlarıdır?

Özet: Çok Aşamalı Verimlilik

Çok aşamalı Docker derlemelerini öğrendiniz!

  • Tek bir Dockerfile içinde birden çok FROM yönergesi kullanırlar.
  • AS anahtar sözcüğü aşamaları adlandırır, COPY --from= ise derleme çıktılarını aktarır.
  • Temel avantajı, çok daha küçük, daha güvenli ve daha verimli son görüntüler oluşturmaktır.

Bu teknik, kapsayıcılı uygulamalarınızı optimize etmek için kritik öneme sahiptir. Sırada derleme önbelleğinden yararlanmayı inceleyeceğiz!

Sıkça Sorulan Sorular

“Verimlilik için Çok Aşamalı Derlemeler” dersi ücretsiz mi?

Evet — “Verimlilik için Çok Aşamalı Derlemeler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Docker & DevOps Fundamentals kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Docker & DevOps Fundamentals kursu toplamda 4 dersten oluşur.

“Verimlilik için Çok Aşamalı Derlemeler” dersinde ne öğreneceğim?

Derleme ve çalışma zamanı bağımlılıklarını ayırarak daha küçük ve güvenli üretim imajları oluşturmak için çok aşamalı derlemelerden yararlanın. Docker & DevOps Fundamentals ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Docker & DevOps Fundamentals öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Docker & DevOps Fundamentals, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Verimlilik için Çok Aşamalı Derlemeler” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Docker & DevOps Fundamentals dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Docker & DevOps Fundamentals dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Verimlilik için Çok Aşamalı Derlemeler
  2. Derleme Önbelleğinden Yararlanma
  3. Dockerfile Güvenliği için En İyi Uygulamalar
  4. Slim ve Distroless Tabanlarla İmaj Boyutunu Küçültme
← Docker & DevOps Fundamentals Sayfasına Dön