« Tüm yayınlar

Docker İmajını 1.2GB'tan 180MB'a İndirmenin 5 Yolu

Uygulama kodunu değiştirmeden Docker imaj boyutunu %85 küçültme rehberi: multi-stage build, küçük base image, katman sıralaması ve .dockerignore taktikleri.

Bir geliştirici, devraldığı servisin 1.2GB'lık Docker imajını tek satır uygulama kodu değiştirmeden yaklaşık 180MB'a indirdiği süreci paylaşıyor. En büyük kazanç multi-stage build kullanmaktan geldi: derleme araçlarını ve bağımlılıkları içeren aşama ile çalışma zamanı imajı ayrıştırılarak yalnızca gerekli çıktılar kopyalandı, bu tek adım yaklaşık 500MB tasarruf sağladı. Ardından node:20 yerine node:20-slim gibi daha küçük bir base image seçilmesi, statik binary üreten dillerde ise distroless veya scratch kullanılabileceği, ancak bu imajlarda shell bulunmadığı için debug sürecinin farklılaştığı vurgulanıyor.

Diğer önemli adımlar arasında Docker katmanlarının sırasını değiştirmek yer alıyor: lockfile önce kopyalanıp bağımlılıklar kurulduktan sonra kaynak kodun kopyalanması, dört dakikalık yeniden derlemeyi yirmi saniyeye indirdi. Kapsamlı bir .dockerignore dosyası eklemek .git geçmişi, node_modules ve yerel .env dosyaları gibi gereksiz içeriğin build context'ine sızmasını engelledi. Son olarak, apt-get install ve temizlik komutlarının aynı RUN katmanında birleştirilmesi gerektiği, aksi halde silinen dosyaların önceki katmanda kalmaya devam ettiği anlatılıyor.

Sonuç olarak imaj boyutu 1.2GB'tan 180MB'a, soğuk pull süresi 90 saniyeden 12 saniyeye, önbellekli yeniden derleme ise 4 dakikadan 20 saniyeye düştü. Bu teknikler egzotik değil ama birlikte uygulandığında CI/CD sürecini ve deploy deneyimini kökten değiştirebiliyor; mühendisler için doğrudan uygulanabilir, düşük riskli optimizasyonlar sunuyor.