CB DIGITAL
Tüm Makalelere Dön
DevOps & Bulut
23 Mart 2026

Docker Multi-Stage Build ile İmaj Boyutunu 1 GB'tan 50 MB'a Düşürme Rehberi

Cengiz Bozdemir
Cengiz BozdemirKurumsal Yazılım Mimarı
Docker Multi-Stage Build ile İmaj Boyutunu 1 GB'tan 50 MB'a Düşürme Rehberi

📌 Rehber Özeti & Hedef Çıktı

Derleme araçları ve gereksiz bağımlılıkları üretim imajından arındırarak güvenli, hafif ve hızlı dağıtılan (deploy) Docker konteynerleri oluşturma yöntemi.

1. Giriş ve Karşılaşılan Temel Zorluklar

Node.js veya Go uygulamalarında devDependencies, derleyiciler ve paket yöneticisi önbelleği üretim imajına dahil edildiğinde imaj boyutu 1 GB'ı aşar; güvenlik açıkları artar ve deploy süresi uzar.

Modern kurumsal yazılım mimarisinde bu adımı doğru tasarlamak; hem uygulamanın bakım maliyetini (maintainability) düşürür hem de gelecekteki ölçekleme (scaling) süreçlerinde refactor ihtiyacını en aza indirir. Bu rehberde, sektörde kabul görmüş standartlar ışığında adım adım uygulamayı ele alıyoruz.

2. Ortam Hazırlığı ve Gerekli Bağımlılıklar

Geliştirmeye başlamadan önce sistem ortamınızın ve ilgili paketlerin hazır olduğundan emin olmalısınız. Terminalinizde aşağıdaki komutları çalıştırarak ilgili yapılandırmayı tamamlayın:

  • Adım: Proje kök dizininde Dockerfile dosyasını açın.
  • Adım: Derleme ve çalışma (runtime) aşamalarını iki ayrı 'FROM' bloğuna ayırın.

3. Uygulama Mimarisi ve Kod Örneği

Aşağıdaki kod bloğunda, temiz kod (Clean Code) prensiplerine ve SOLID standartlarına uygun olarak tasarlanmış örnek implementasyonu inceleyebilirsiniz:

# Aşama 1: Derleme (Builder)
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# Aşama 2: Üretim (Production Runtime)
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production

# Yalnızca çalışması gereken dosyaları kopyala
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
COPY --from=builder /app/node_modules ./node_modules

# Güvenlik için root yetkisiz kullanıcı oluştur
RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 nextjs
USER nextjs

EXPOSE 3000
CMD ["npm", "start"]

4. Kod Analizi ve Çalışma Mantığı

Multi-stage mimarisinde builder aşamasındaki kaynak kodlar, git geçmişi ve geçici derleme dosyaları runner aşamasına geçirilmez. Sonuç olarak ortaya ultra hafif ve güvenli bir imaj çıkar.

Yukarıdaki implementasyonda dikkat edilmesi gereken en kritik husus, işlemlerin bağımsız (decoupled) ve test edilebilir şekilde katmanlara ayrılmış olmasıdır. Bu yaklaşım, birim testlerin (Unit Tests) ve entegrasyon testlerinin hızlıca yazılabilmesine olanak tanır.

5. Performans ve Güvenlik İpuçları

Canlı üretim (production) ortamında sistemin kararlı çalışması için aşağıdaki pratikleri mutlaka dikkate almalısınız:

  • Alpine Linux veya Distroless tabanlı temel imajları tercih ederek saldırı yüzeyini küçültün.
  • Konteyneri kesinlikle root kullanıcısı ile çalıştırmayın; kısıtlı bir sistem kullanıcısı atayın.
  • .dockerignore dosyası oluşturarak node_modules, .git ve yerel .env dosyalarının imaja girmesini engelleyin.

6. En Sık Yapılan Hatalar ve Hata Ayıklama (Troubleshooting)

Docker katman önbelleğinden (layer caching) yararlanabilmek için package.json kopyalamasını kaynak kod kopyalamasından önce yapmayı unutmamalısınız.

Eğer beklenmedik bir hata ile karşılaşırsanız; öncelikle log dosyalarını incelemeli, ortam değişkenlerinin (.env) doğru tanımlandığını doğrulamalı ve önbellek (cache) mekanizmalarını temizleyerek sistemi yeniden başlatmalısınız.

7. Sonuç ve Mimari Değerlendirme

Multi-stage Docker mimarisi, bulut sunucu faturalarını düşüren ve CI/CD süreçlerini hızlandıran bir modern devops standardıdır.

Cengiz Bozdemir olarak 18 yılı aşkın kurumsal yazılım mimarlığı deneyimimle tavsiyem; sistem tasarımında her zaman sürdürülebilirlik, güvenlik ve yüksek eşzamanlılık (high concurrency) hedeflerini ön planda tutmanızdır. Kurumsal projelerinizde özel mimari danışmanlık veya uçtan uca yazılım geliştirme desteği için bizimle iletişime geçebilirsiniz.

#docker#devops#multi-stage build#container#alpine#cloud
Cengiz Bozdemir

Cengiz Bozdemir

Kurumsal Yazılım Mimarı & Full-Stack Geliştirici

İşletmeniz veya girişiminiz için yüksek performanslı sistemler, özel yazılımlar ve yapay zeka otomasyonları inşa ediyorum.

KURUMSAL YAZILIM MİMARİSİ18+ YILLIK TECRÜBEPHP 8.3 & LARAVELFLUTTER & MOBİL ÇÖZÜMLERNEXT.JS & REACT UYGULAMALARIYAPAY ZEKA & OTOMASYONE-TİCARET & PAZARYERİ ENTEGRASYONUCENGİZ BOZDEMİRCBDIGITALKURUMSAL YAZILIM MİMARİSİ18+ YILLIK TECRÜBEPHP 8.3 & LARAVELFLUTTER & MOBİL ÇÖZÜMLERNEXT.JS & REACT UYGULAMALARIYAPAY ZEKA & OTOMASYONE-TİCARET & PAZARYERİ ENTEGRASYONUCENGİZ BOZDEMİRCBDIGITALKURUMSAL YAZILIM MİMARİSİ18+ YILLIK TECRÜBEPHP 8.3 & LARAVELFLUTTER & MOBİL ÇÖZÜMLERNEXT.JS & REACT UYGULAMALARIYAPAY ZEKA & OTOMASYONE-TİCARET & PAZARYERİ ENTEGRASYONUCENGİZ BOZDEMİRCBDIGITALKURUMSAL YAZILIM MİMARİSİ18+ YILLIK TECRÜBEPHP 8.3 & LARAVELFLUTTER & MOBİL ÇÖZÜMLERNEXT.JS & REACT UYGULAMALARIYAPAY ZEKA & OTOMASYONE-TİCARET & PAZARYERİ ENTEGRASYONUCENGİZ BOZDEMİRCBDIGITAL
© 2026 CB DIGITAL Tüm hakları saklıdır.