Web Geliştirme

Docker ile Web Uygulaması Deployment

22 Dec 2025
5 dakika okuma
İninia Teknoloji

Docker, uygulamaları container'lar içinde paketleyerek "benim makinemde çalışıyor" sorununu ortadan kaldırır. Modern DevOps pratiklerinin temel taşı olan Docker, deployment süreçlerini standartlaştırır ve ölçeklendirmeyi kolaylaştırır.

Docker Temel Kavramları

Image

Uygulamanın çalışması için gereken tüm bağımlılıkları içeren salt-okunur şablon. Dockerfile'dan oluşturulur.

Container

Image'in çalışan örneği. İzole bir ortamda uygulama çalıştırır.

Dockerfile

Image oluşturmak için talimatları içeren metin dosyası.

Docker Compose

Çoklu container uygulamalarını tanımlama ve çalıştırma aracı.

Temel Dockerfile Örneği (Node.js)

FROM node:18-alpine

WORKDIR /app

COPY package*.json ./
RUN npm ci --only=production

COPY . .

EXPOSE 3000

CMD ["node", "server.js"]

Docker Compose Örneği

version: "3.8"
services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - DB_HOST=db
    depends_on:
      - db
      - redis
  
  db:
    image: postgres:15
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=secret
  
  redis:
    image: redis:7-alpine

volumes:
  postgres_data:

Deployment Stratejileri

1. Single Server Deployment

Küçük projeler için: Docker Compose ile tek sunucu üzerinde çalıştırma.

2. Container Orchestration

  • Docker Swarm: Docker'ın native orchestration çözümü, basit
  • Kubernetes: Endüstri standardı, kompleks ama güçlü
  • AWS ECS/EKS: Amazon'un container servisleri

3. Managed Platforms

  • Railway, Render: Git push ile deploy
  • Fly.io: Edge deployment
  • Google Cloud Run: Serverless containers

Best Practices

Image Optimizasyonu

  1. Multi-stage build kullanın (küçük final image)
  2. Alpine base image tercih edin
  3. .dockerignore dosyası oluşturun
  4. Layer'ları optimize edin (sık değişenler sona)
  5. Root kullanıcı yerine özel user oluşturun

Güvenlik

  • Official image'ları kullanın
  • Image'ları düzenli güncelleyin (vulnerability scan)
  • Secrets'ı environment variable olarak geçirin
  • Read-only filesystem tercih edin

Logging ve Monitoring

  • STDOUT/STDERR'a log yazın
  • Centralized logging (ELK, Loki)
  • Health check endpoint'leri tanımlayın
  • Container metrics (Prometheus, Grafana)

CI/CD Entegrasyonu

# GitHub Actions örneği
name: Build and Deploy

on:
  push:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Build and push
        run: |
          docker build -t myapp:${{ github.sha }} .
          docker push registry/myapp:${{ github.sha }}
      - name: Deploy
        run: |
          ssh server "docker pull registry/myapp:${{ github.sha }}"
          ssh server "docker compose up -d"

Production Checklist

  • ☐ Health checks tanımlı
  • ☐ Resource limits (CPU, memory) belirli
  • ☐ Restart policy yapılandırılmış
  • ☐ Logging çözümü entegre
  • ☐ SSL/TLS yapılandırılmış
  • ☐ Backup stratejisi mevcut
  • ☐ Rollback planı hazır

Docker, modern yazılım deployment'ının standart aracı haline geldi. Container teknolojisine hakim olmak, DevOps yeteneklerinizi güçlendirir ve daha güvenilir deployment süreçleri oluşturmanızı sağlar.

İninia Teknoloji

İstanbul Teknik Üniversitesi ARI Teknokent'te kurulu Ininia Teknoloji, 12+ yıllık deneyimle AR/VR, yapay zeka ve mobil uygulama alanlarında yenilikçi çözümler sunmaktadır.

Projeniz için profesyonel destek mi arıyorsunuz?

12+ yıllık deneyimimizle dijital dönüşümünüzü hızlandıralım.

Ücretsiz Görüşme Talep Et