| # Clear any previous Python paths | |
| unset PYTHONPATH | |
| # 1. Start Ingest Service (Go) on a private port (8080) | |
| # We use a subshell to ensure it doesn't steal the global PORT variable | |
| ( | |
| export PORT=8080 | |
| /app/ingest-service/ingest-service | |
| ) & | |
| # 2. Start ML Service (Python) | |
| ( | |
| cd /app/ml-service | |
| export PYTHONPATH=/app/ml-service | |
| /opt/ml_venv/bin/python -m app.main | |
| ) & | |
| # 3. Start API Testing Service (Rust) on a private port (9090) | |
| ( | |
| export BIND_ADDR=127.0.0.1:9090 | |
| /app/api-testing/api-testing | |
| ) & | |
| # 4. Start Control Plane (Python) on the public port 7860 | |
| cd /app/control-plane | |
| export PYTHONPATH=/app/control-plane | |
| exec /opt/cp_venv/bin/python -m uvicorn app.main:app --host 0.0.0.0 --port 7860 --workers 4 | |