Docker Compose, çoklu konteyner uygulamalarını tanımlamak ve çalıştırmak için güçlü bir araçtır. Bu rehberde, Compose dosyalarınızı optimize etmenin en iyi uygulamalarını inceleyeceğiz.

1. Ortam Değişkenlerini Yönetin

# docker-compose.yml
services:
  app:
    image: myapp:latest
    env_file:
      - .env
    environment:
      - NODE_ENV=production

2. Named Volumes Kullanın

services:
  db:
    image: postgres:15
    volumes:
      - postgres_data:/var/lib/postgresql/data
volumes:
  postgres_data:

3. Networks ile İzolasyon Sağlayın

services:
  frontend:
    networks:
      - frontend
  backend:
    networks:
      - frontend
      - backend
  db:
    networks:
      - backend
networks:
  frontend:
  backend:

4. Depends_on ve Healthcheck Kullanın

services:
  app:
    depends_on:
      db:
        condition: service_healthy
  db:
    image: postgres:15
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 5s
      retries: 5

5. Ortam Bazlı Override Dosyaları

# docker-compose.yml (base)
# docker-compose.override.yml (development)
# docker-compose.prod.yml (production)
docker compose -f docker-compose.yml -f docker-compose.prod.yml up

6. Resource Limits Belirleyin

services:
  app:
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 512M
        reservations:
          cpus: '0.25'
          memory: 256M

7. Restart Policy Tanımlayın

services:
  app:
    restart: unless-stopped

Sonuç

Docker Compose, yerel geliştirmeden production'a kadar çoklu konteyner uygulamalarını yönetmek için vazgeçilmez bir araçtır. Bu en iyi uygulamaları takip ederek daha güvenilir ve yönetilebilir yapılar oluşturabilirsiniz.