# Build stage FROM python:3.12-slim AS build COPY --from=ghcr.io/astral-sh/uv:0.8 /uv /uvx /bin/ WORKDIR /app ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy COPY uv.lock pyproject.toml README.md ./ COPY src/ ./src/ RUN --mount=type=cache,target=/root/.cache/uv \ uv sync --no-dev --frozen # Runtime stage FROM python:3.12-slim AS runtime ENV PATH="/app/.venv/bin:$PATH" RUN useradd -m -u 1000 appuser WORKDIR /app RUN mkdir -p /app/data && chown -R appuser:appuser /app COPY --from=build --chown=appuser:appuser /app . USER appuser ENV PYTHONUNBUFFERED=1 ENV DATABASE_PATH=/app/data/app.db EXPOSE 5000 CMD ["hypercorn", "beanflows.app:app", "--bind", "0.0.0.0:5000", "--workers", "1"]