# syntax=docker/dockerfile:1
# Сборка из корня репозитория:
#   docker build -f services/recommender/Dockerfile --build-arg VERSION=1.2.3 .
# Один образ — две роли: `serve` (recommender) и `analyze --workers N` (analyzer).

FROM ghcr.io/astral-sh/uv:0.10.2 AS uv

FROM python:3.12-slim AS build
COPY --from=uv /uv /usr/local/bin/uv
ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy UV_PYTHON_DOWNLOADS=never
WORKDIR /app
COPY services/recommender/pyproject.toml services/recommender/uv.lock ./
RUN --mount=type=cache,target=/root/.cache/uv uv sync --frozen --no-dev --no-install-project
COPY services/recommender/ ./
RUN --mount=type=cache,target=/root/.cache/uv uv sync --frozen --no-dev

FROM python:3.12-slim
RUN useradd --system --uid 10001 pipu
COPY --from=build /app /app
ARG VERSION=0.0.0-dev
ENV PATH=/app/.venv/bin:$PATH PIPU_VERSION=${VERSION} PYTHONUNBUFFERED=1
USER pipu
WORKDIR /app
EXPOSE 8000
ENTRYPOINT ["pipu-rec"]
CMD ["serve"]
