ailixir-api / docker-compose.yml
AILIXIR Bot
Auto-sync: 111e815272130800a3fe964fa998478820680ada
7922c7a
Raw
History Blame Contribute Delete
6.28 kB
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: