| FROM python:3.13.5-slim | |
| WORKDIR /app | |
| RUN apt-get update && apt-get install -y \ | |
| build-essential \ | |
| curl \ | |
| git \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Install uv (multi-stage copy from the official image — no curl/install scripts). | |
| COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ | |
| # Resolve and install dependencies from the lockfile (production: no dev group). | |
| COPY pyproject.toml uv.lock ./ | |
| RUN uv sync --frozen --no-dev | |
| COPY src/ ./src/ | |
| EXPOSE 8501 | |
| HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health | |
| ENTRYPOINT ["uv", "run", "--no-sync", "streamlit", "run", "src/app.py", "--server.port=8501", "--server.address=0.0.0.0"] | |