Docker Compose ne işe yarar? Basit bir örnekle açıklayın.

Cevap

Docker Compose, birden çok container'dan oluşan bir uygulamayı tek bir YAML dosyasıyla tanımlayıp tek komutla ayağa kaldırmayı sağlar. Özellikle lokal geliştirme ve test ortamlarında kullanılır.

# compose.yaml
services:
  api:
    build: .
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgres://app:secret@db:5432/app
      REDIS_URL: redis://cache:6379
    depends_on:
      db:
        condition: service_healthy
    volumes:
      - ./src:/app/src        # kod değişikliği anında yansısın

  db:
    image: postgres:16
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: app
    volumes:
      - pgdata:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U app"]
      interval: 5s
      retries: 5

  cache:
    image: redis:7

volumes:
  pgdata:

Temel komutlar

  • docker compose up -d: tüm servisleri arka planda başlatır
  • docker compose logs -f api: logları izler
  • docker compose exec db psql -U app: çalışan container'da komut çalıştırır
  • docker compose down: durdurur ve siler (-v ile volume'ları da siler)

Önemli noktalar

  • Compose tüm servisler için ortak bir ağ kurar; servisler birbirine servis adıyla erişir (db:5432). Container içinden localhost kendi container'ını gösterir.
  • depends_on tek başına yalnızca başlama sırasını belirler, servisin hazır olmasını beklemez. Hazır olmayı beklemek için healthcheck + condition: service_healthy gerekir.
  • Adlandırılmış volume (pgdata) container silinse de veriyi korur.

Production'da çok sunuculu orkestrasyon için genellikle Kubernetes veya yönetilen servisler (ECS, Cloud Run) tercih edilir.

  1. Ortam değişkenleri ve secret'lar (şifre, API anahtarı) güvenli şekilde nasıl yönetilir?OrtaDocker & DevOpsBackend
  2. CI/CD nedir? Tipik bir backend CI/CD pipeline'ının aşamaları nelerdir?OrtaDocker & DevOpsBackend
  3. İyi bir Dockerfile nasıl yazılır? Multi-stage build ne işe yarar?OrtaDocker & DevOpsBackend
  4. Container ile sanal makine (VM) arasındaki fark nedir?KolayDocker & DevOpsBackend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle