ailixir-api / DOCKER.md
AILIXIR Bot
Auto-sync: 201d269f287526269b8ffded5f450ff36b46c740
907b200
|
Raw
History Blame Contribute Delete
1.99 kB
# AILIXIR Docker Stack
Monorepo stack: **Laravel API** + **ADMET** + **Drug Repurposing** + **Chemical RAG**.
## Requirements
- Docker 24+ with Compose v2
- ~16 GB RAM recommended (PyTorch + ADMET models)
- Model artifacts present locally:
- `ai_apps/ADMIT/admet_inference/models/*/best_model.ckpt`
- `ai_apps/Drug Reporposing/save_folder/pretrained_models/...`
## Quick start
```bash
# From repository root
docker compose build
docker compose up -d
```
| Service | Host URL |
|---------|----------|
| Laravel API | http://localhost:8080 |
| ADMET | http://localhost:8002 |
| Drug Repurposing | http://localhost:8001 |
| Chemical RAG | http://localhost:5000 |
## Laravel → AI integration endpoints
Enabled when `AI_INTEGRATION_ROUTES_ENABLED=true` (set in `docker/laravel.env`).
| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/api/ai-services/health` | Ping all AI `/health` endpoints |
| POST | `/api/ai-services/test/admet` | Proxy ADMET `/predict` |
| POST | `/api/ai-services/test/chemical-search` | Proxy Chemical RAG retrieval |
| GET | `/api/ai-services/test/drug-repurposing` | Health + model status |
Example:
```bash
curl http://localhost:8080/api/ai-services/health
curl -X POST http://localhost:8080/api/ai-services/test/admet \
-H "Content-Type: application/json" \
-d '{"smiles":"c1ccccc1"}'
```
## Images
- **Laravel**: multi-stage (`composer` + `node` + `php:8.3-cli-alpine`), runs as `www-data`
- **ADMET / Drug Repurposing**: existing multi-stage Python slim images, non-root UID 1000
- **Chemical RAG**: multi-stage `python:3.11-slim`, non-root `raguser`
- **MySQL**: `mariadb:11.4`
## CI
GitHub Actions workflow: `.github/workflows/integration-test.yml`
Builds the full stack and tests Laravel proxy endpoints against all AI services.
## Environment
Copy and adjust `docker/laravel.env` for container-specific values. For local (non-Docker) development, set URLs in `.env` using `.env.example` as reference.