@@ -3,33 +3,37 @@ ARG UV_OVERRIDE
33
44# --- Base images ---
55FROM nvidia/cuda:12.6.3-base-ubuntu22.04 AS gpu
6- ENV UV_ARGUMENTS="--extra all,cu126"
7- RUN echo "Using GPU image"
6+ ENV SYNC_ARGS="--extra all --extra cu126"
87
98FROM ubuntu:22.04 AS cpu
10- ENV UV_ARGUMENTS="--extra all,cpu"
11- RUN echo "Using CPU-only image"
9+ ENV SYNC_ARGS="--extra all --extra cpu"
1210
1311# --- Build ---
1412FROM ${DEVICE:-gpu} AS build
1513ARG UV_OVERRIDE
16- ENV UV_ARGUMENTS =${UV_OVERRIDE:-$UV_ARGUMENTS }
14+ ENV SYNC_ARGS =${UV_OVERRIDE:-$SYNC_ARGS }
1715
1816ARG USER_UID=1000
1917ARG USER_GID=1000
2018
2119# Install system dependencies
2220RUN apt-get update && \
2321 DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
24- python3.11 python3.11-venv python3-pip \
25- tzdata nano curl ffmpeg libsm6 libxext6 libnss3 \
22+ tzdata nano curl git ffmpeg libsm6 libxext6 libnss3 \
2623 libxi6 libxrandr2 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxrender1 \
2724 libasound2 libatk1.0-0 libgtk-3-0 libreoffice libjpeg-dev libpango-1.0-0 \
2825 libpangoft2-1.0-0 weasyprint && \
2926 ln -fs /usr/share/zoneinfo/Europe/Zurich /etc/localtime && \
3027 dpkg-reconfigure --frontend noninteractive tzdata && \
3128 apt-get clean && rm -rf /var/lib/apt/lists/*
3229
30+ # Install uv
31+ COPY --from=ghcr.io/astral-sh/uv:0.7.13 /uv /uvx /bin/
32+
33+ ENV UV_PYTHON=3.11 \
34+ UV_PROJECT_ENVIRONMENT=/app/.venv \
35+ UV_LINK_MODE=copy
36+
3337# Create non-root user
3438RUN groupadd --gid ${USER_GID} mmoreuser \
3539 && useradd --uid ${USER_UID} --gid ${USER_GID} -m mmoreuser
@@ -38,17 +42,14 @@ WORKDIR /app
3842RUN chown mmoreuser:mmoreuser /app
3943USER mmoreuser
4044
41- # Set up Python virtual environment
42- RUN python3.11 -m venv .venv \
43- && .venv/bin/pip install --no-cache-dir uv
44-
4545# Install dependencies (cached unless uv.lock changes)
4646COPY --chown=mmoreuser:mmoreuser pyproject.toml uv.lock /app/
47- RUN .venv/bin/uv sync --frozen --no-install-project ${UV_ARGUMENTS}
47+ RUN --mount=type=cache,target=/home/mmoreuser/.cache/uv,uid=${USER_UID},gid=${USER_GID} \
48+ uv sync --frozen --no-install-project ${SYNC_ARGS}
4849
4950# Install mmore from local source code
5051COPY --chown=mmoreuser:mmoreuser . /app
51- RUN .venv/bin/ uv pip install --no-cache --no-deps -e .
52+ RUN uv pip install --no-cache --no-deps -e .
5253
5354# --- Runtime ---
5455ENV PATH="/app/.venv/bin:$PATH"
@@ -57,4 +58,4 @@ ENV HF_HOME="/home/mmoreuser/.cache/huggingface"
5758ENV TORCH_HOME="/home/mmoreuser/.cache/torch"
5859ENV XDG_CACHE_HOME="/home/mmoreuser/.cache"
5960
60- ENTRYPOINT ["/bin/bash" ]
61+ ENTRYPOINT ["/bin/bash" ]
0 commit comments