Browse Source

build: optimize docker multi-stage builds

dev
Dnomd343 1 month ago
parent
commit
818102172b
  1. 18
      Dockerfile

18
Dockerfile

@ -1,19 +1,23 @@
ARG PYTHON="python:3.12-alpine3.22"
FROM ${PYTHON} AS builder
RUN apk add uv
RUN sh -c '[ $(getconf LONG_BIT) -eq 64 ] || apk add gcc cargo musl-dev libffi-dev openssl-dev'
WORKDIR /build/
RUN --mount=type=bind,rw,source=./src/,target=./src/ \
--mount=type=bind,ro,source=uv.lock,target=uv.lock \
--mount=type=bind,ro,source=pyproject.toml,target=pyproject.toml \
uv tree --frozen && \
uv export --frozen --no-dev --no-emit-package syncplay -o requirements.txt && \
pip wheel --require-hashes -r requirements.txt --wheel-dir /wheels/ && \
COPY uv.lock pyproject.toml .
RUN uv export --frozen --no-dev --no-emit-package syncplay -o requirements.txt && \
pip wheel --require-hashes -r requirements.txt --wheel-dir /wheels/
RUN --mount=type=bind,rw,source=./src/syncplay/,target=./src/syncplay/ \
sed -i '/ep_client/s/ =/-client =/g; s/requirements_gui.txt/\/dev\/null/g' ./src/syncplay/setup.py && \
pip wheel --no-deps ./src/syncplay/ --wheel-dir /wheels/ && \
pip wheel --no-deps ./src/syncplay/ --wheel-dir /wheels/
RUN --mount=type=bind,rw,source=./src/,target=./src/ \
uv build --wheel -o /wheels/
FROM ${PYTHON}
LABEL org.opencontainers.image.vendor="Dnomd343"
LABEL org.opencontainers.image.authors="dnomd343@gmail.com"

Loading…
Cancel
Save