# ───────────────────────────────────────────── # Dockerfile for Hugging Face Spaces (Docker SDK) # Free tier: 2 vCPU · 16 GB RAM · port 7860 # ───────────────────────────────────────────── FROM python:3.11-slim # System packages needed by faiss-cpu / pdf parsing / openpyxl RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ curl \ git \ && rm -rf /var/lib/apt/lists/* # HF Spaces requirement: run as uid 1000 RUN useradd -m -u 1000 user USER user ENV HOME=/home/user \ PATH=/home/user/.local/bin:$PATH WORKDIR $HOME/app # Install uv RUN pip install --no-cache-dir uv # Copy dependency manifest & install COPY --chown=user pyproject.toml . RUN uv sync --no-dev # Copy application source COPY --chown=user chatbot_final.py . # Create data directories (ephemeral on free tier; use HF Storage for persistence) RUN mkdir -p /home/user/app/data/pdfs \ /home/user/app/data/embeddings \ /home/user/app/data/users # Default env vars (can be overridden via HF Space Settings → Variables / Secrets) ENV PDF_STORE_DIR=/home/user/app/data/pdfs \ EMBEDDINGS_STORE_DIR=/home/user/app/data/embeddings \ USER_XL_PATH=/home/user/app/data/users/users.xlsx \ LLM_BACKEND=huggingface \ HF_MODEL_ID=mistralai/Mistral-7B-Instruct-v0.3 EXPOSE 7860 HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ CMD curl --fail http://localhost:7860/_stcore/health || exit 1 CMD ["/home/user/app/.venv/bin/streamlit", "run", "chatbot_final.py", \ "--server.port=7860", \ "--server.address=0.0.0.0", \ "--server.headless=true"]