Spaces:
Running
Running
File size: 1,828 Bytes
c2858c1 4a878aa c2858c1 4a878aa b4806b0 c2858c1 b4806b0 c2858c1 8b3dd4b 4a878aa c2858c1 b4806b0 4a878aa b4806b0 c2858c1 b4806b0 4a878aa b4806b0 8b3dd4b b4806b0 8b3dd4b b4806b0 | 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 | #!/usr/bin/env bash
set -euo pipefail
echo "[entrypoint] Starting EHRGym β¦"
cleanup() {
echo "[entrypoint] Shutting down β¦"
kill "${NGINX_PID:-}" "${ENV_SERVER_PID:-}" "${EHR_PID:-}" 2>/dev/null || true
}
trap cleanup EXIT INT TERM
export DATABASE_URL="${DATABASE_URL:-file:/app/prisma/dev.db}"
export PORT="${PORT:-3000}"
export EHR_BASE_URL="${EHR_BASE_URL:-http://127.0.0.1:${PORT}}"
export EHRGYM_SERVER_URL="${EHRGYM_SERVER_URL:-http://127.0.0.1:8000}"
# ββ Start nginx FIRST so HF Spaces sees port 7860 open immediately ββ
if command -v nginx &>/dev/null && [[ -f /app/docker/nginx.conf ]]; then
echo "[entrypoint] Starting nginx reverse proxy on :7860 β¦"
nginx -c /app/docker/nginx.conf -g 'daemon off;' &
NGINX_PID=$!
echo "[entrypoint] nginx started (pid=$NGINX_PID)."
fi
# ββ Database setup (only if DB file is missing) ββ
DB_PATH="/app/prisma/dev.db"
if [[ ! -f "$DB_PATH" ]]; then
echo "[entrypoint] Database not found β seeding β¦"
npx prisma generate
npx prisma db push
npx prisma db seed
echo "[entrypoint] Database ready."
else
echo "[entrypoint] Database exists at $DB_PATH β skipping seed."
fi
# ββ Start env server (FastAPI + Playwright) on :8000 ββ
echo "[entrypoint] Starting env server on :8000 β¦"
uvicorn env_server.app.main:app --host 127.0.0.1 --port 8000 &
ENV_SERVER_PID=$!
# ββ Start Next.js EHR on internal :3000 ββ
echo "[entrypoint] Starting Next.js EHR on :${PORT} β¦"
npm run start --workspace @ehrgym/ehr -- --hostname 127.0.0.1 --port "$PORT" &
EHR_PID=$!
echo "[entrypoint] All services launched (nginx=$NGINX_PID, env=$ENV_SERVER_PID, ehr=$EHR_PID). EHRGym is ready."
# ββ Wait on nginx (foreground process for Docker) ββ
if [[ -n "${NGINX_PID:-}" ]]; then
wait "$NGINX_PID"
else
wait "$EHR_PID"
fi
|