From d22e28b232a29e3c6227f7afb89600d709d8042c Mon Sep 17 00:00:00 2001 From: Dnomd343 Date: Sat, 12 Apr 2025 16:08:50 +0800 Subject: [PATCH] build: adapt uv of docker image build --- Dockerfile | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/Dockerfile b/Dockerfile index 70aca39..903c3af 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,26 +1,20 @@ ARG PYTHON="python:3.12-alpine3.21" FROM ${PYTHON} AS builder -ENV SYNCPLAY="1.7.4" -RUN apk add gcc musl-dev libffi-dev +RUN apk add uv gcc musl-dev libffi-dev RUN sh -c '[ $(getconf LONG_BIT) -eq 64 ] || apk add cargo openssl-dev' -RUN wget https://github.com/Syncplay/syncplay/archive/v${SYNCPLAY}.tar.gz -O- | tar xz -WORKDIR ./syncplay-${SYNCPLAY}/ -RUN cat /dev/null > requirements_gui.txt -RUN SNAPCRAFT_PART_BUILD=1 pip wheel --wheel-dir /wheels/ ./ - -FROM ${PYTHON} AS syncplay -WORKDIR /wheels/ -RUN pip wheel PyYaml -COPY --from=builder /wheels/ /wheels/ -WORKDIR /release/local/lib/ -RUN mkdir $(basename /usr/local/lib/python3.*/) && cd ./python3.*/ && \ - ls /wheels/*.whl | xargs -P0 -n1 unzip -d ./site-packages/ -COPY ./boot.py /release/bin/syncplay +COPY . /build/ +WORKDIR /build/ +RUN uv tree --frozen && \ + uv export --frozen --no-emit-package syncplay -o requirements.txt +RUN pip wheel --no-deps ./src/syncplay/ --wheel-dir /wheels/ && \ + pip wheel --require-hashes -r requirements.txt --wheel-dir /wheels/ FROM ${PYTHON} RUN sh -c '[ $(getconf LONG_BIT) -eq 64 ] || apk add --no-cache libgcc' -COPY --from=syncplay /release/ /usr/ +RUN --mount=type=cache,ro,from=builder,source=/wheels/,target=/wheels/ \ + cd /usr/local/lib/python3.*/ && ls /wheels/*.whl | xargs -P0 -n1 unzip -d ./site-packages/ +COPY ./src/boot.py /usr/bin/syncplay ENV PYTHONUNBUFFERED=1 EXPOSE 8999 WORKDIR /data/