IHS Strategic
Tüm Blog Yazıları
HowTo22 Eylül 2026•2 dk okuma

Docker ile Web Uygulaması Dağıtımı Rehberi: Modern Trendler ve Dijital Strateji

Docker ve container mimarisiyle web uygulaması dağıtımı adım adım rehber. Modern DevOps trendleri, imaj optimizasyonu ve üretim ortamı dijital strateji adımları içerir.

S

Sistem Yöneticisi

Kıdemli Yazılım Mimarı

Docker ve Container Mimarisi: Modern Dijital Strateji

Geleneksel dağıtım modelleri sunucu bağımlılığı ve konfigürasyon uyuşmazlığı yaratır. Container mimarisi, uygulamayı bağımlılıklarıyla paketler. Çevre bağımsız, tekrarlanabilir dağıtım sağlar. Modern yazılım geliştirme trendleri içinde mikroservis ve bulut yerel (cloud-native) mimarilerin temelidir.

Adım 1: Uygulama İçin Optimize Dockerfile Yazımı

Dağıtımın temeli minimal ve güvenli imaj üretimidir. Multi-stage build kullanarak imaj boyutu düşürülür, saldırı yüzeyi daraltılır.

Örnek Multi-Stage Dockerfile (Node.js/Go Örneği)

# Derleme aşaması
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# Üretim aşaması
FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
USER node
COPY --chown=node:node --from=builder /app/dist ./dist
COPY --chown=node:node --from=builder /app/node_modules ./node_modules
COPY --chown=node:node package.json ./
EXPOSE 3000
CMD ["node", "dist/main.js"]

Önemli noktalar:

  • Alpine/Distroless taban imaj: Gereksiz paketleri engeller.
  • Non-root kullanıcı: Güvenlik standardı gereği USER node tanımlanır.
  • Katman önbellekleme (Layer Caching): Kaynak koddan önce package.json kopyalanır.

Adım 2: Docker Compose ile Servis Orkestrasyonu

Web uygulamaları veritabanı, reverse proxy ve önbellek servislerine ihtiyaç duyar. Tek dosyada ortam tanımı yapılır.

version: '3.8'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgres://user:pass@db:5432/app_db
    depends_on:
      - db
    restart: always

  db:
    image: postgres:16-alpine
    volumes:
      - pgdata:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=pass
      - POSTGRES_DB=app_db

volumes:
  pgdata:

Adım 3: Üretim Dağıtım Stratejileri ve Trendler

Container dağıtımında kesintisiz erişim (Zero-Downtime) esastır. Uygulanan modern dağıtım yöntemleri:

  • Blue-Green Deployment: İki özdeş ortam. Biri canlı trafiği alırken diğeri güncellenir. Router/Load Balancer yönlendirilir. Risk sıfırlanır.
  • Rolling Update: Container'lar aşamalı olarak yenilenir. Kaynak tüketimi düşüktür.
  • Reverse Proxy (Nginx / Traefik): SSL sonlandırma, HTTP/2 yönlendirme ve rate limit işlemleri reverse proxy katmanında çözülür.

Güvenlik Uyarısı: Üretim ortamında container içine gizli anahtarları (API key, DB password) doğrudan yazmayın. Environment variables, Docker Secrets veya Vault çözümlerini tercih edin.

Adım 4: CI/CD Pipeline ile Otomatik Deployment

Manuel dağıtım hata üretir. GitHub Actions veya GitLab CI ile pipeline kurulur:

  1. Koda commit atılır.
  2. Testler koşar, Docker imajı derlenir.
  3. İmaj GitHub Container Registry (GHCR) veya Docker Hub'a push edilir.
  4. SSH veya Webhook tetikleyicisiyle sunucuda docker compose pull && docker compose up -d çalıştırılır.

Pratik Kontrol Listesi (Checklist)

  • .dockerignore dosyası eklendi mi? (node_modules, .git, .env hariç tutulmalı).
  • İmaj etiketleri sürümlendi mi? (:latest yerine :v1.2.0 veya :git-sha).
  • Healthcheck komutları tanımlandı mı?
  • Loglar container dışına (stdout/stderr) aktarılıyor mu?