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

Docker ile Modern Web Uygulaması Dağıtım Rehberi: Container Mimarisi ve Trendler

Modern web uygulamaları için Docker ve container tabanlı dağıtım rehberi. Dijital ajans iş akışlarına uygun, adım adım deployment süreçleri ve sektör trendleri.

S

Sistem Yöneticisi

Kıdemli Yazılım Mimarı

Giriş: Modern Web Dağıtımında Container Dönemi

Container mimarisi, yazılım dünyasında standart haline geldi. Bir dijital ajans veya yazılım ekibi için 'bende çalışıyordu, sunucuda çalışmıyor' devri kapandı. Bu rehber, modern web uygulamalarını Docker kullanarak izole, tekrarlanabilir ve hızlı şekilde production ortamına dağıtma adımlarını gösterir.

Adım 1: Uygulama İzolasyonu ve Dockerfile Hazırlığı

Uygulama kök dizininde minimal ve çok aşamalı (multi-stage) Dockerfile tanımlanmalıdır. Bu yöntem imaj boyutunu küçültür ve güvenlik açıklarını azaltır.

Örnek: Multi-Stage Dockerfile (Node.js/Go uyumlu)

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

# Production aşaması
FROM node:20-alpine
WORKDIR /app
ENV NODE_ENV=production
COPY package*.json ./
RUN npm ci --only=production
COPY --from=builder /app/dist ./dist
EXPOSE 3000
USER node
CMD ["node", "dist/main.js"]

Adım 2: Çevre Değişkenleri ve .dockerignore

Gereksiz dosyaların container içine girmesini engellemek için .dockerignore dosyası oluşturulmalıdır:

  • node_modules
  • .git
  • .env
  • Dockerfile
  • README.md
Güvenlik Uyarısı: API anahtarları, DB şifreleri imaja gömülmez. Ortam değişkenleri (Environment Variables) ya da Docker Secrets kullanılır.

Adım 3: Çoklu Servis Yapılandırması (Docker Compose)

Uygulama, veri tabanı ve ters vekil sunucu (Reverse Proxy) tek merkezden yönetilir.

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

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

volumes:
  pgdata:

Adım 4: Sunucuya Dağıtım (Production Deployment)

  1. Sunucu Hazırlığı: Ubuntu tabanlı sunucuda Docker ve Docker Compose Engine kurulur.
  2. Kod Aktarımı: Git reposu çekilir veya CI/CD aracıyla imaj Container Registry'ye (GHCR/Docker Hub) yüklenir.
  3. Başlatma: docker compose up -d --build komutu ile servisler arka planda çalıştırılır.
  4. Sıfır Kesinti: Yeni sürüme geçerken docker compose pull && docker compose up -d --no-deps --build web uygulanır.

Modern Web Trendleri: 2024 ve Sonrası

  • Minimal Base Images: Alpine yerine Chainguard veya Distroless kullanımı.
  • GitOps & CI/CD: GitHub Actions üzerinden doğrudan Kubernetes veya Docker Swarm entegrasyonu.
  • Edge Deployment: Stateless container yapılarının CDN ve Edge nodelarına dağıtımı.