# Stage 1: build app FROM ghcr.io/astral-sh/uv:bookworm-slim AS builder ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy ENV UV_PYTHON_INSTALL_DIR=/python ENV UV_PYTHON_PREFERENCE=only-managed RUN uv python install 3.12 WORKDIR /app RUN --mount=type=cache,target=/root/.cache/uv \ --mount=type=bind,source=uv.lock,target=uv.lock \ --mount=type=bind,source=pyproject.toml,target=pyproject.toml \ uv sync --locked --no-install-project --no-dev COPY . /app RUN --mount=type=cache,target=/root/.cache/uv \ uv sync --locked --no-dev # Stage 2: Create nonroot image for running te app FROM debian:bookworm-slim RUN groupadd --system --gid 999 nonroot \ && useradd --system --gid 999 --uid 999 --create-home nonroot COPY --from=builder /python /python COPY --from=builder --chown=nonroot:nonroot /app /app ENV PATH="/app/.venv/bin:$PATH" USER nonroot WORKDIR /app CMD ["flask", "--app", "main", "run", "--debug", "--host", "0.0.0.0"]