| FROM python:3.11-slim | |
| WORKDIR /app | |
| RUN apt-get update && apt-get install -y \ | |
| build-essential curl git \ | |
| && rm -rf /var/lib/apt/lists/* | |
| RUN pip install uv | |
| # Copy minimal files first (for caching) | |
| COPY pyproject.toml uv.lock README.md ./ | |
| COPY src/ ./src/ | |
| # Now uv sync can find README.md | |
| RUN uv sync --no-dev | |
| # Bake model into image — single line, no indentation issues | |
| RUN uv run python -c "from sentence_transformers import SentenceTransformer; SentenceTransformer('nomic-ai/nomic-embed-text-v1.5', trust_remote_code=True); print('Model cached.')" | |
| # Copy remaining files | |
| COPY . . | |
| EXPOSE 7860 | |
| CMD ["uv", "run", "uvicorn", "civicsetu.api.main:app", \ | |
| "--host", "0.0.0.0", "--port", "7860", "--log-level", "info"] | |