File size: 1,990 Bytes
907b200
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# 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.