Spaces:
Running
Running
| name: ailixir | |
| services: | |
| # ── Laravel API ───────────────────────────────────────────── | |
| laravel: | |
| build: | |
| context: . | |
| dockerfile: Dockerfile | |
| container_name: ailixir-laravel | |
| restart: unless-stopped | |
| ports: | |
| - "${LARAVEL_HTTP_PORT:-8080}:8000" | |
| env_file: | |
| - docker/laravel.env | |
| environment: | |
| CLOUDINARY_URL: cloudinary://dummy_key:dummy_secret@dummy_cloud | |
| CLOUDINARY_CLOUD_NAME: dummy_cloud | |
| CLOUDINARY_API_KEY: dummy_key | |
| CLOUDINARY_API_SECRET: dummy_secret | |
| GENERATION_SERVICE_URL: http://generation:8000 | |
| CHEMICAL_AI_URL: http://chemical-rag:5000 | |
| ADMET_AI_URL: http://admet:8000 | |
| AI_ADMET_SERVICE_URL: http://admet:8000 | |
| DRUG_REPURPOSING_URL: http://drug-repurposing:8000 | |
| AI_SERVICE_URL: http://drug-repurposing:8000 | |
| AI_INTEGRATION_ROUTES_ENABLED: "true" | |
| volumes: | |
| - laravel-storage:/var/www/html/storage | |
| depends_on: | |
| generation: | |
| condition: service_healthy | |
| admet: | |
| condition: service_healthy | |
| chemical-rag: | |
| condition: service_healthy | |
| drug-repurposing: | |
| condition: service_healthy | |
| networks: | |
| - ailixir | |
| queue: | |
| build: | |
| context: . | |
| dockerfile: Dockerfile | |
| container_name: ailixir-queue | |
| restart: unless-stopped | |
| env_file: | |
| - docker/laravel.env | |
| environment: | |
| CLOUDINARY_URL: cloudinary://dummy_key:dummy_secret@dummy_cloud | |
| CLOUDINARY_CLOUD_NAME: dummy_cloud | |
| CLOUDINARY_API_KEY: dummy_key | |
| CLOUDINARY_API_SECRET: dummy_secret | |
| CHEMICAL_AI_URL: http://chemical-rag:5000 | |
| ADMET_AI_URL: http://admet:8000 | |
| AI_ADMET_SERVICE_URL: http://admet:8000 | |
| DRUG_REPURPOSING_URL: http://drug-repurposing:8000 | |
| AI_SERVICE_URL: http://drug-repurposing:8000 | |
| RUN_MIGRATIONS: "false" | |
| # Wait for Laravel to complete migrations before starting queue | |
| command: sh -c "sleep 30 && php artisan queue:work --sleep=3 --tries=3 --timeout=300" | |
| depends_on: | |
| laravel: | |
| condition: service_started | |
| healthcheck: | |
| test: ["CMD", "php", "artisan", "queue:work", "--once"] | |
| interval: 30s | |
| timeout: 10s | |
| retries: 5 | |
| start_period: 90s | |
| networks: | |
| - ailixir | |
| # ── AI microservices ──────────────────────────────────────── | |
| generation-deeppurpose: | |
| build: | |
| context: ./ai_apps/generation | |
| dockerfile: Dockerfile.dp | |
| container_name: ailixir-generation-deeppurpose | |
| restart: unless-stopped | |
| ports: | |
| - "${GENERATION_DEEPPURPOSE_HTTP_PORT:-8006}:8001" | |
| volumes: | |
| - generation-outputs:/app/outputs | |
| - ./ai_apps/generation/bundle:/app/bundle | |
| networks: | |
| - ailixir | |
| healthcheck: | |
| test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8001/health')"] | |
| interval: 30s | |
| timeout: 10s | |
| retries: 8 | |
| start_period: 240s | |
| deploy: | |
| resources: | |
| limits: | |
| memory: 6G | |
| generation: | |
| build: | |
| context: ./ai_apps/generation | |
| dockerfile: Dockerfile.api | |
| container_name: ailixir-generation | |
| restart: unless-stopped | |
| ports: | |
| - "${GENERATION_HTTP_PORT:-8005}:8000" | |
| environment: | |
| PUBLIC_BASE_URL: http://localhost:8005 | |
| DEEPPURPOSE_URL: http://generation-deeppurpose:8001/reinvent_predict | |
| REINVENT_DEVICE: cpu | |
| NVIDIA_VISIBLE_DEVICES: all | |
| NVIDIA_DRIVER_CAPABILITIES: compute,utility | |
| ADGPU_BIN: /opt/AutoDock-GPU/bin/autodock_gpu_64wi | |
| volumes: | |
| - generation-outputs:/app/outputs | |
| - ./ai_apps/generation/bundle:/app/bundle | |
| depends_on: | |
| generation-deeppurpose: | |
| condition: service_healthy | |
| networks: | |
| - ailixir | |
| healthcheck: | |
| test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"] | |
| interval: 30s | |
| timeout: 10s | |
| retries: 8 | |
| start_period: 300s | |
| deploy: | |
| resources: | |
| limits: | |
| memory: 8G | |
| admet: | |
| build: | |
| context: ./ai_apps/ADMIT/admet_inference | |
| dockerfile: Dockerfile | |
| container_name: ailixir-admet | |
| restart: unless-stopped | |
| ports: | |
| - "${ADMET_HTTP_PORT:-8002}:8000" | |
| environment: | |
| PYTHONUNBUFFERED: "1" | |
| LOG_LEVEL: INFO | |
| networks: | |
| - ailixir | |
| healthcheck: | |
| test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"] | |
| interval: 30s | |
| timeout: 10s | |
| retries: 8 | |
| start_period: 240s | |
| deploy: | |
| resources: | |
| limits: | |
| memory: 6G | |
| drug-repurposing: | |
| build: | |
| context: "./ai_apps/Drug Reporposing" | |
| dockerfile: docker/Dockerfile | |
| container_name: ailixir-drug-repurposing | |
| restart: unless-stopped | |
| ports: | |
| - "${DRUG_REPURPOSING_HTTP_PORT:-8001}:8000" | |
| environment: | |
| HOST: 0.0.0.0 | |
| PORT: "8000" | |
| DEBUG: "False" | |
| LOG_LEVEL: INFO | |
| USE_MOCK_MODEL: "False" | |
| USE_MOCK_DRUGS: "False" | |
| networks: | |
| - ailixir | |
| healthcheck: | |
| test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"] | |
| interval: 30s | |
| timeout: 10s | |
| retries: 5 | |
| start_period: 180s | |
| deploy: | |
| resources: | |
| limits: | |
| memory: 8G | |
| chemical-rag: | |
| build: | |
| context: ./ai_apps/chemical-rag-system/chemical-rag-system | |
| dockerfile: Dockerfile | |
| container_name: ailixir-chemical-rag | |
| restart: unless-stopped | |
| ports: | |
| - "${CHEMICAL_RAG_HTTP_PORT:-5000}:5000" | |
| environment: | |
| PYTHONUNBUFFERED: "1" | |
| API_PORT: "5000" | |
| API_HOST: 0.0.0.0 | |
| volumes: | |
| - chemical-rag-data:/app/data | |
| networks: | |
| - ailixir | |
| healthcheck: | |
| test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:5000/health')"] | |
| interval: 30s | |
| timeout: 10s | |
| retries: 5 | |
| start_period: 180s | |
| deploy: | |
| resources: | |
| limits: | |
| memory: 4G | |
| networks: | |
| ailixir: | |
| driver: bridge | |
| volumes: | |
| generation-outputs: | |
| laravel-storage: | |
| chemical-rag-data: | |