# syntax=docker/dockerfile:1 FROM python:3.10-slim ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 \ CHROMA_DB_PATH=/data/chroma \ CACHE_ROOT=/data/cache \ HOME=/data \ POSTHOG_DISABLED=true \ CHROMA_TELEMETRY_DISABLED=true \ HF_HOME=/data/cache/hf \ TRANSFORMERS_CACHE=/data/cache/transformers \ SENTENCE_TRANSFORMERS_HOME=/data/cache/sentence-transformers \ XDG_CACHE_HOME=/data/cache # System deps RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ curl \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # Ensure writable paths for Chroma and model caches RUN mkdir -p "$CHROMA_DB_PATH" "$CACHE_ROOT" "$HF_HOME" "$TRANSFORMERS_CACHE" "$SENTENCE_TRANSFORMERS_HOME" "$HOME/.cache" "$HOME/.cache/chroma" \ && chmod -R 777 "$CHROMA_DB_PATH" "$CACHE_ROOT" "$HOME/.cache" # Copy requirements first for better caching COPY requirements.txt ./ RUN pip install --upgrade pip && pip install -r requirements.txt # Copy application code COPY . . # Expose port (HF Spaces typically uses 7860/8000) EXPOSE 7860 # Default envs (GOOGLE_API_KEY must be provided at runtime) ENV PORT=7860 # Start the API CMD ["uvicorn", "api:app", "--host", "0.0.0.0", "--port", "7860"]