# 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"]