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

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

Modern web uygulamalarını Docker ve konteyner mimarisi ile prodüksiyon ortamına dağıtma rehberi. Dijital ajanslar ve geliştiriciler için adım adım optimizasyon ve deployment adımları.

S

Sistem Yöneticisi

Kıdemli Yazılım Mimarı

Giriş: Modern Web ve Konteyner Mimarisi

Geleneksel sunucu dağıtımları 'benim makinemde çalışıyordu' sorununa yol açar. Konteyner mimarisi kod, bağımlılıklar ve çalışma zamanını izole paket yapar. Dijital ajans ekipleri ve modern web projeleri için dağıtım standardıdır. Sektör trendleri mikroservis, multi-stage build ve hafif imajlar yönündedir.

Adım 1: .dockerignore Dosyası Oluşturma

Gereksiz dosyalar imaj boyutunu şişirir, build süresini uzatır. Proje kök dizininde .dockerignore tanımlayın:

node_modules
.git
.env
*.log
dist

Adım 2: Multi-Stage Dockerfile Tanımlama

Prodüksiyon imajında derleme araçları yer almamalıdır. Multi-stage build kullanarak nihai boyutu minimize edin:

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

FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
USER node
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/dist ./dist
EXPOSE 3000
CMD ["node", "dist/main.js"]
Güvenlik Kuralı: Konteyneri asla root kullanıcısı ile çalıştırmayın. USER node veya özel kullanıcı tanımlayın.

Adım 3: Docker Compose ile Servisleri Birleştirme

Web uygulaması ve ters vekil sunucu (Nginx) tek yapılandırma ile yönetilir. docker-compose.yml:

version: '3.8'
services:
  web:
    build: .
    restart: always
    environment:
      - PORT=3000
    networks:
      - app-network

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
    depends_on:
      - web
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

Adım 4: Prodüksiyona Dağıtım (Deployment)

Sunucuya erişin ve servisleri başlatın:

  1. İmajı derleyin ve arka planda çalıştırın:
    docker compose up -d --build
  2. Çalışma durumunu doğrulayın:
    docker compose ps
  3. Canlı log takibi:
    docker compose logs -f web

Optimizasyon ve Bakım İpuçları

  • Minimal Temel İmaj: alpine veya distroless imajları tercih edin. Güvenlik açığı riskini ve indirme süresini düşürür.
  • Healthcheck Ekleyin: Konteyner çökme durumunda otomatik yeniden başlatma için Dockerfile içine sağlık kontrolü ekleyin.
  • Kullanılmayan Kaynakları Temizleyin: Düzenli aralıklarla sunucuda docker system prune -af --volumes çalıştırarak disk alanı kazanın.