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

Docker ile Web Uygulaması Dağıtım Rehberi: Modern Web Mimarisi ve Adım Adım Deployment

Modern web mimarisinde Docker container dağıtımı için kapsamlı rehber. Multi-stage build, Docker Compose ve production optimizasyon adımları.

S

Sistem Yöneticisi

Kıdemli Yazılım Mimarı

Modern Web Dağıtımında Docker ve Container Mimarisi

Geleneksel sunucu dağıtımları ortam uyumsuzlukları ve kaynak israfı yaratır. Modern web trendleri uygulamaların izole, taşınabilir ve ölçeklenebilir container yapıları üzerinde çalışmasını gerektirir. Dijital ajans altyapılarında ve kurumsal sistemlerde Docker, geliştirme ve canlı ortam arasındaki farkları sıfırlar.

Adım 1: Multi-Stage Dockerfile ile İmaj Boyutu Optimizasyonu

Gereksiz build araçlarını production imajından çıkarmak güvenlik ve hız sağlar. Multi-stage build yaklaşımı kullanılır.

FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
  • Build Katmanı: Derleme araçları içerir, son imaja dahil edilmez.
  • Production Katmanı: Yalnızca derlenmiş statik dosyaları ve Nginx binary dosyasını barındırır.

Adım 2: .dockerignore Dosyası ile Gereksiz Dosyaları Filtreleme

İmaj boyutunu şişiren ve build cache mekanizmasını bozan dosyalar hariç tutulmalıdır. Kök dizinde .dockerignore tanımlanır:

node_modules
.git
.env
*.md
dist

Adım 3: Docker Compose ile Servis Orkestrasyonu

Modern web uygulamaları bağımsız servislerden oluşur. Web sunucusu, API ve veritabanı tek konfigürasyonla ayağa kaldırılır.

version: '3.8'

services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "80:80"
    restart: always
    environment:
      - NODE_ENV=production
    depends_on:
      - db

  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: app_db
      POSTGRES_USER: user
      POSTGRES_PASSWORD_FILE: /run/secrets/db_password
    secrets:
      - db_password
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

secrets:
  db_password:
    file: ./secrets/db_password.txt

Adım 4: Production Güvenliği ve Ortam Değişkenleri Yönetimi

Gizli anahtarlar asla imaj içine gömülmez. Production ortamında şu standartlar uygulanır:

  • Rootless Container: Süreçler root yetkisi olmayan kullanıcı ile çalıştırılır (USER node).
  • Docker Secrets / Environment: API anahtarları ve veritabanı şifreleri Docker Secret veya ortam değişkenleri üzerinden runtime anında enjekte edilir.
  • Healthcheck: Konteyner sağlığı periyodik kontrol edilir:
HEALTHCHECK --interval=30s --timeout=3s \
  CMD wget --quiet --tries=1 --spider http://localhost/ || exit 1

Adım 5: Canlıya Alma ve Deployment Otomasyonu

Sunucu üzerinde minimal komut setiyle deployment tamamlanır:

docker compose pull
docker compose up -d --remove-orphans
docker image prune -f
Bu rehber, dijital ajans ekiplerinin ve yazılım mimarlarının modern web projelerinde sıfır kesinti ve öngörülebilir dağıtım süreçleri kurması için standart referanstır.