# docker-compose.yml

version: '3.8' # ورژن فایل docker-compose

services:
  # سرویس دیتابیس PostgreSQL
  db:
    image: postgres:18-alpine # از ایمیج رسمی و سبک PostgreSQL استفاده می‌کنیم
    volumes:
      - postgres_data:/var/lib/postgresql/data/ # داده‌های دیتابیس رو روی سیستم خودمون ذخیره می‌کنیم تا پاک نشن
    environment:
      # متغیرهای محیطی برای تنظیم دیتابیس (از فایل .env خوانده می‌شود)
      POSTGRES_DB: ${DB_NAME}
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    networks: # این سرویس در شبکه داخلی 'ideahub_network' قرار می‌گیرد
      - ideahub_network

  # سرویس اپلیکیشن جنگو
  web:
    build: . # ایمیج این سرویس رو از Dockerfile موجود در همین پوشه بساز
    command: gunicorn project_name.wsgi:application --bind 0.0.0.0:8000 # دستوری که بعد از ساخت ایمیج اجرا می‌شود
    volumes:
      - .:/app # کد پروژه رو به داخل کانتینر وصل می‌کنیم تا تغییرات کد دیده بشه (برای توسعه)
      - ./mediafiles:/app/mediafiles # <<< این خط جدید است: پوشه مدیا رو وصل می‌کنه
    ports:
      - "8000:8000" # پورت 8000 کامپیوتر شما رو به پورت 8000 داخل کانتینر وصل می‌کنه
    env_file: # متغیرهای محیطی رو از فایل .env می‌خونه
      - .env
    depends_on: # اول سرویس 'db' باید اجرا بشه، بعد 'web'
      - db
    networks: # این سرویس هم در همان شبکه داخلی قرار می‌گیرد
      - ideahub_network

# تعریف والیوم برای ذخیره داده‌های دیتابیس
volumes:
  postgres_data:

# تعریف شبکه داخلی برای ارتباط سرویس‌ها
networks:
  ideahub_network:
    driver: bridge