Ömer Özbay
Docker
DevOps

Docker Multi-Stage Builds ile Image Boyutunu %80 Azaltın

8 Mart 2026 15 dk okuma 1.8K görüntülenme

Docker Multi-Stage Builds, production image'larınızı küçük, güvenli ve hızlı hale getirmenin en etkili yöntemidir. Tek bir Dockerfile ile build ortamını ve production ortamını birbirinden tamamen ayırabilirsiniz.

Neden Multi-Stage?

  • Build araçları (compiler, test runner) production image'a girmez
  • Image boyutu dramatik biçimde küçülür
  • Saldırı yüzeyi azalır, güvenlik artar
  • CI/CD pipeline'ları hızlanır

Node.js Uygulaması için Örnek

# Stage 1: Build FROM node:20-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # Stage 2: Production FROM node:20-alpine AS production WORKDIR /app ENV NODE_ENV=production COPY package*.json ./ RUN npm ci --only=production && npm cache clean --force COPY --from=builder /app/dist ./dist EXPOSE 3000 USER node CMD ["node", "dist/index.js"]

Sonuçlar

  • Tek stage: 1.2 GB
  • Multi-stage: 180 MB — %85 küçülme

Alpine vs Distroless

Alpine Linux küçük ama musl libc kullanır. Google'ın Distroless image'ları ise shell bile içermez, maksimum güvenlik için idealdir.

# Distroless ile daha da küçük ve güvenli FROM gcr.io/distroless/nodejs20-debian12 COPY --from=builder /app/dist /app/dist WORKDIR /app CMD ["dist/index.js"]

Sonuç

Multi-stage builds, modern Docker workflow'unun olmazsa olmazı. Hem geliştirme hem production için ayrı stage'ler tanımlayarak hem hız hem güvenlik kazanırsınız.

Faydalı buldunuz mu? Bu içeriği kendi ağınızla paylaşarak bana destek olabilirsiniz.