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

Docker ve Container Mimarisi ile Web Uygulaması Dağıtımı: Adım Adım Rehber

Container mimarisi kullanarak web uygulamalarını canlı ortama güvenli, hızlı ve optimize şekilde dağıtma rehberi. Modern DevOps trendleri ve dijital strateji adımları.

S

Sistem Yöneticisi

Kıdemli Yazılım Mimarı

Container Mimarisi ve Dijital Strateji

Modern yazılım süreçlerinde monolitik yapıdan mikroservis ve container mimarisine geçiş kritik bir dijital strateji adımıdır. Docker; bağımlılıkları izole eder, ortamlar arası tutarsızlığı bitirir ve dağıtım (deployment) süreçlerini otomatikleştirir. Güncel DevOps trendleri, hafif imajlar (Alpine/Distroless) ve multi-stage build kullanımını standart kabul eder.

1. Adım: Dockerfile ile Uygulamayı Paketleme

Uygulama kök dizinine Dockerfile ekleyin. Multi-stage build kullanarak gereksiz derleme araçlarını nihai imajdan çıkarın.

# 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
WORKDIR /app
ENV NODE_ENV=production
COPY package*.json ./
RUN npm ci --omit=dev
COPY --from=builder /app/dist ./dist
USER node
EXPOSE 3000
CMD ["node", "dist/main.js"]

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

Gereksiz dosya ve bağımlılıkların imaja girmesini engelleyin. Build süresini kısaltır, imaj boyutunu küçültür.

  • node_modules
  • .git
  • .env
  • npm-debug.log

3. Adım: Docker Compose ile Çoklu Servis Yönetimi

Web uygulaması ve veri tabanını izole bir ağda bağlamak için docker-compose.yml tanımlayın:

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

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

volumes:
  pgdata:

4. Adım: Dağıtım (Deployment) ve Canlıya Çıkış

  1. İmajı Derleyin: docker build -t app:v1 .
  2. İmajı Registry'ye Gönderin: docker push registry.example.com/app:v1
  3. Sunucuda Çalıştırın: docker compose up -d
Güvenlik uyarısı: Canlı ortamda konteynerleri asla root kullanıcısıyla çalıştırmayın. Gizli anahtarları ve şifreleri Dockerfile içine sabit kodlamayın; Docker Secrets veya ortam değişkenleri kullanın.

Üretim Ortamı İçin En İyi Pratikler

  • Sağlık Kontrolleri (Healthcheck): Konteyner durumunu izlemek için HEALTHCHECK komutunu ekleyin.
  • Kayıt Yönetimi (Logging): Logları stdout/stderr üzerinden dışa aktarın, disk dolmasını önlemek için log rotation tanımlayın.
  • Kaynak Sınırları: OOM (Out of Memory) çökmelerini engellemek için CPU ve bellek limitleri atayın.