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

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

Modern web uygulamalarını Docker ile container mimarisinde dağıtma rehberi. Dijital ajanslar ve yazılımcılar için adım adım pratik deployment süreci.

S

Sistem Yöneticisi

Kıdemli Yazılım Mimarı

Modern Web Dağıtımında Docker ve Trendler

Geleneksel sunucu dağıtımları yerini container mimarilerine bıraktı. Modern web dünyasında dijital ajans ekipleri ve geliştiriciler 'bende çalışıyor, sunucuda çalışmıyor' sorununu Docker ile çözüyor. Container yapıları, taşınabilirlik ve kaynak optimizasyonu sağlar.

Adım 1: Optimize Edilmiş Dockerfile Hazırlama

Uygulama kök dizininde çok aşamalı (multi-stage) Dockerfile oluşturun. İmaj boyutunu minimumda tutun:

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

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

Adım 2: Docker Compose ile Servisleri Tanımlama

Web servisi ve veritabanı gibi bileşenleri docker-compose.yml dosyası ile orkestre edin:

version: '3.8'

services:
  web:
    build: .
    restart: always
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - 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:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

Adım 3: Nginx Ters Proxy ve SSL Yapılandırması

Modern web projelerinde container önünde ters proxy (reverse proxy) konumlandırılır. Nginx kullanarak gelen 80/443 isteklerini container portuna yönlendirin:

server {
    listen 80;
    server_name ornekajans.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Adım 4: Sunucuya Dağıtım ve Çalıştırma

Üretim ortamında container'ları arka planda başlatın:

# Container'ları derle ve başlat
docker compose up -d --build

# Çalışan container durumlarını kontrol et
docker compose ps

# Logları izle
docker compose logs -f web

Dijital Ajanslar İçin En İyi Pratikler

  • Root kullanmayın: Güvenlik açığını engellemek için Dockerfile içinde USER node veya benzeri yetkisiz kullanıcı tanımlayın.
  • .dockerignore ekleyin: node_modules, .git ve .env dosyalarını imaja dahil etmeyin.
  • Otomasyon kurun: CI/CD süreçlerine GitHub Actions veya GitLab CI ekleyerek testten geçen her commit için otomatik build alın.