diff --git a/docker-compose.yml b/docker-compose.yml index 9596b20..fd2e65f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,43 +1,58 @@ -# راه‌اندازی چهار سرویس از یک ایمیج مشترک: -# web → وب‌سرور Gunicorn (می‌گریشن/استاتیک فقط اینجا اجرا می‌شود) -# worker → تخلیه صف پیامک (sms_worker) -# scheduler → اسکن دوره‌ای و صف‌کردن یادآوری‌ها (sms_scan --loop) -# delivery → استعلام وضعیت تحویل پیامک‌ها (sms_delivery --sleep 30) -# -# توجه: دیتابیس SQLite است؛ مقیاس افقی (چند replica) ممنوع. +version: '3.8' + +# تنظیمات پایه مشترک برای تمام سرویس‌ها x-app: &app build: . + image: khatibi-app:latest env_file: production.env volumes: - - ./sqlite:/app/sqlite + - khatibi-sqlite-db:/app/sqlite:rw restart: unless-stopped + networks: + - coolify services: web: <<: *app - ports: - - "8000:8000" + # در صورت استفاده از دامنه و پروکسی Coolify از expose استفاده کنید: + expose: + - "8000" + # اگر مایلید پورت مستقیماً روی سرور باز شود، خط بالا را کامنت کرده و دو خط زیر را فعال کنید: + # ports: + # - "8000:8000" healthcheck: - test: ["CMD-SHELL", "python -c \"import urllib.request;urllib.request.urlopen('http://127.0.0.1:8000/').read()\""] - interval: 30s - timeout: 10s + test: ["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/').read()\""] + interval: 15s + timeout: 5s retries: 5 - start_period: 60s + start_period: 30s worker: <<: *app command: ["python", "manage.py", "sms_worker", "--sleep", "3"] depends_on: - - web + web: + condition: service_healthy scheduler: <<: *app command: ["python", "manage.py", "sms_scan", "--loop", "--interval", "300"] depends_on: - - web + web: + condition: service_healthy delivery: <<: *app command: ["python", "manage.py", "sms_delivery", "--sleep", "30"] depends_on: - - web + web: + condition: service_healthy + +volumes: + khatibi-sqlite-db: + external: true + name: tu9bnt8x4cd0hsmn8x6r5arf-khatibi-sqlite-db + +networks: + coolify: + external: true \ No newline at end of file