Spaces:
Sleeping
Sleeping
| set -e | |
| echo "Starting IRIS IR Platform..." | |
| backend_loop() { | |
| while true; do | |
| echo "Starting cache-backed FastAPI backend on port 8000..." | |
| cd /app/backend | |
| python3 -m uvicorn lightweight_server:app --host 0.0.0.0 --port 8000 | |
| echo "Backend process exited; restarting in 2 seconds..." | |
| sleep 2 | |
| done | |
| } | |
| # Start FastAPI backend on port 8000 with an automatic restart loop. | |
| # Hugging Face uses the cache-backed lightweight API to avoid cold-starting | |
| # local vector indexes and model dependencies on CPU. | |
| backend_loop & | |
| BACKEND_LOOP_PID=$! | |
| # Wait for backend to be ready | |
| echo "Waiting for backend..." | |
| for i in {1..45}; do | |
| if curl -sf http://localhost:8000/api/health > /dev/null 2>&1; then | |
| echo "Backend ready!" | |
| break | |
| fi | |
| sleep 2 | |
| done | |
| if ! curl -sf http://localhost:8000/api/health > /dev/null 2>&1; then | |
| echo "Backend still warming; Next.js cache-backed proxy will serve IRIS API routes." | |
| fi | |
| # Start Next.js frontend on port 7860 (HuggingFace default port) | |
| cd /app | |
| PORT=7860 HOSTNAME=0.0.0.0 node server.js & | |
| FRONTEND_PID=$! | |
| echo "IRIS is running:" | |
| echo " Frontend -> http://0.0.0.0:7860" | |
| echo " Backend -> http://localhost:8000" | |
| echo " Fallback -> Next.js /api/proxy cache-backed IR API" | |
| # Keep alive | |
| trap "kill $BACKEND_LOOP_PID $FRONTEND_PID 2>/dev/null; exit" EXIT SIGTERM SIGINT | |
| wait $FRONTEND_PID | |