chromadb-usc-vecs / start.sh
gabrielaltay's picture
Upload start.sh with huggingface_hub
c54281d verified
#!/usr/bin/env sh
set -eu
APP_HOST=${APP_HOST:-0.0.0.0}
APP_PORT=${APP_PORT:-7860}
CHROMA_HOST=${CHROMA_HOST:-127.0.0.1}
CHROMA_PORT=${CHROMA_PORT:-8001}
DATA_DIR=${CHROMA_DATA_DIR:-/home/user/app/data}
UVICORN_LOG_LEVEL=${UVICORN_LOG_LEVEL:-info}
echo "Runtime config:"
echo " APP_HOST=$APP_HOST"
echo " APP_PORT=$APP_PORT"
echo " CHROMA_HOST=$CHROMA_HOST"
echo " CHROMA_PORT=$CHROMA_PORT"
echo " DATA_DIR=$DATA_DIR"
echo " UVICORN_LOG_LEVEL=$UVICORN_LOG_LEVEL"
mkdir -p "$DATA_DIR"
echo "Starting ChromaDB on ${CHROMA_HOST}:${CHROMA_PORT} (data: $DATA_DIR)"
chroma run --host "$CHROMA_HOST" --port "$CHROMA_PORT" --path "$DATA_DIR" &
CHROMA_PID=$!
echo "Waiting for ChromaDB..."
python - <<'PY'
import os, socket, time, sys
h = os.environ.get('CHROMA_HOST','127.0.0.1')
p = int(os.environ.get('CHROMA_PORT','8001'))
for i in range(120):
try:
with socket.create_connection((h,p), timeout=0.5):
print(f"Chroma ready after {i*0.5:.1f}s")
sys.exit(0)
except OSError:
time.sleep(0.5)
print('Timeout waiting for Chroma', file=sys.stderr)
sys.exit(1)
PY
trap 'echo "Stopping..."; kill -TERM "$CHROMA_PID" 2>/dev/null || true; wait "$CHROMA_PID" 2>/dev/null || true' INT TERM
echo "Starting FastAPI on ${APP_HOST}:${APP_PORT}"
exec uvicorn app:app --host "$APP_HOST" --port "$APP_PORT" --log-level "$UVICORN_LOG_LEVEL" --access-log