رفتن به محتوا
بازگشت به وبلاگ
دواپس

Docker Compose برای محیط تولیدی: بهترین شیوه‌ها

استفاده از Docker Compose در تولید با Health Check، محدودیت منابع، مدیریت Secret، Driver های لاگ‌گیری و به‌روزرسانی‌های Rolling.

مهر ۱۴۰۴
۱۲ دقیقه مطالعه

مقدمه

Docker Compose برای توسعه محلی عالی است، اما اجرای آن در production نیازمند ملاحظات اضافی است: high availability، مدیریت لاگ، مدیریت secrets، health check و restart policy. این راهنما نحوه پیکربندی Docker Compose برای بارهای کاری production را آموزش می‌دهد.

فایل‌های چندگانه Compose

BASH
# ترکیب فایل‌های base و production
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d

مدیریت Secrets

BASH
# هرگز secrets را در docker-compose.yml قرار ندهید
# ایجاد فایل .env (هرگز commit نکنید!)
cat > /opt/app/.env << 'EOF'
DATABASE_URL=postgresql://user:pass@postgres:5432/db
REDIS_PASSWORD=StrongPass!
EOF
chmod 600 /opt/app/.env

Health Checks

YAML
services:
  app:
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 60s

  depends_on:
    postgres:
      condition: service_healthy

پشتیبان‌گیری

BASH
# dump دیتابیس از container در حال اجرا
docker compose exec -T postgres   pg_dump -U "$POSTGRES_USER" "$POSTGRES_DB"   | gzip > "backup_$(date +%Y%m%d).sql.gz"

Docker Compose در production برای استقرارهای کوچک تا متوسط (یک یا چند سرور) به خوبی کار می‌کند. وقتی به زمان‌بندی چند-host، خود-ترمیمی یا مدیریت دقیق منابع نیاز دارید، به Kubernetes مهاجرت کنید.