Spaces:
Running
Running
| # ---------- UI build stage ---------- | |
| FROM node:20-alpine AS ui-builder | |
| WORKDIR /app/ui | |
| # install deps | |
| COPY ui/package*.json ./ | |
| RUN npm ci | |
| # build | |
| COPY ui/ ./ | |
| RUN npm run build | |
| # normalize to /app/ui/out regardless of framework (Vite=dist, CRA=build) | |
| RUN if [ -d dist ]; then mv dist out; \ | |
| elif [ -d build ]; then mv build out; \ | |
| else echo "No UI build output found" && ls -la && exit 1; fi | |
| # ---------- Python runtime ---------- | |
| FROM python:3.11-slim | |
| ENV PIP_NO_CACHE_DIR=1 PYTHONUNBUFFERED=1 PORT=7860 | |
| WORKDIR /app | |
| COPY requirements.txt ./ | |
| RUN python -m pip install --upgrade pip && \ | |
| pip install --extra-index-url https://download.pytorch.org/whl/cpu -r requirements.txt | |
| COPY backend/ ./backend/ | |
| # copy built UI from the builder stage | |
| COPY --from=ui-builder /app/ui/out ./ui/dist | |
| ENV TRANSFORMERS_CACHE=/data/hf_cache \ | |
| HF_HOME=/data/hf_home \ | |
| HUGGINGFACE_HUB_CACHE=/data/hf_cache \ | |
| SENTENCE_TRANSFORMERS_HOME=/data/st_cache \ | |
| XDG_CACHE_HOME=/data/.cache | |
| RUN mkdir -p /data/hf_cache /data/hf_home /data/st_cache /data/.cache && \ | |
| chmod -R 777 /data | |
| EXPOSE 7860 | |
| CMD ["uvicorn", "backend.api:api", "--host", "0.0.0.0", "--port", "7860"] | |