Spaces:
Paused
Paused
| # ---- 1. base image --------------------------------------------------------- | |
| FROM python:3.11-slim | |
| # ---- 2. system dependencies for binary wheels ------------------------------ | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| build-essential \ | |
| gcc \ | |
| g++ \ | |
| cmake \ | |
| libgomp1 \ | |
| libstdc++6 \ | |
| ca-certificates \ | |
| wget \ | |
| unzip \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # ---- 3. upgrade pip & enable pre-built wheels ------------------------------ | |
| RUN pip install --no-cache-dir --upgrade pip setuptools wheel | |
| # ---- 4. install Python deps (+ DuckDB driver) ------------------------------ | |
| COPY requirements.txt /tmp/requirements.txt | |
| RUN pip install --no-cache-dir --prefer-binary -r /tmp/requirements.txt && \ | |
| pip install --no-cache-dir "duckdb>=1.0.0" | |
| # ---- 4b. install CPU-only PyTorch (minimal addition) ----------------------- | |
| RUN pip install --no-cache-dir torch==2.2.2 --index-url https://download.pytorch.org/whl/cpu | |
| # ---- 5. Pre-download VSS extension (matches DuckDB v1.0.0) --------------- | |
| RUN mkdir -p /root/.duckdb/extensions/v1.0.0/linux_amd64 && \ | |
| wget -q https://extensions.duckdb.org/v1.0.0/linux_amd64/vss.duckdb_extension.gz \ | |
| -O /root/.duckdb/extensions/v1.0.0/linux_amd64/vss.duckdb_extension.gz && \ | |
| gunzip /root/.duckdb/extensions/v1.0.0/linux_amd64/vss.duckdb_extension.gz | |
| # ---- 6. copy source -------------------------------------------------------- | |
| COPY . /app | |
| WORKDIR /app | |
| # ---- 7. scheduler loop ---------------------------------------------------- | |
| COPY scheduler_loop.py /app/scheduler_loop.py | |
| # ---- 8. start both services ----------------------------------------------- | |
| CMD sh -c "python -m uvicorn app.main:app --host 0.0.0.0 --port 7860 & python /app/scheduler_loop.py" |