# syntax=docker/dockerfile:1.7 FROM rockylinux/rockylinux:10 AS base RUN dnf install -y python3 && dnf clean all ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ UV_COMPILE_BYTECODE=1 \ UV_LINK_MODE=copy \ UV_PROJECT_ENVIRONMENT=/app/.venv COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv WORKDIR /app FROM base AS deps COPY pyproject.toml uv.lock* ./ RUN --mount=type=cache,target=/root/.cache/uv \ uv sync --frozen --no-install-project --no-dev FROM deps AS app-build COPY app/ ./app/ RUN --mount=type=cache,target=/root/.cache/uv \ uv sync --frozen --no-dev FROM base AS final RUN groupadd --gid 10001 appgroup && \ useradd --uid 10001 --gid 10001 --no-create-home --shell /sbin/nologin appuser COPY --from=app-build --chown=appuser:appgroup /app /app USER appuser WORKDIR /app ENV PATH="/app/.venv/bin:$PATH" EXPOSE 8000 ENTRYPOINT ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--no-access-log"]