From 865c145b42e9d10f2b33a5e26cf0c84177f67647 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn-Michael=20Miehe?= Date: Fri, 20 Feb 2026 12:17:54 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20Dockerfile=20rework?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - eliminate corepack dependency - improved caching - changed some comments and paths --- Dockerfile | 48 +++++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/Dockerfile b/Dockerfile index aa06f73..67fc59f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,7 @@ ARG NODE_VERSION=24 ARG PYTHON_VERSION=3.14 + ############ # build ui # ############ @@ -8,25 +9,25 @@ ARG PYTHON_VERSION=3.14 ARG NODE_VERSION FROM node:${NODE_VERSION} AS build-ui -# env setup +# install ui dependencies WORKDIR /usr/local/src/advent22_ui - -# install advent22_ui dependencies RUN --mount=type=bind,source=ui/package.json,target=package.json \ --mount=type=bind,source=ui/yarn.lock,target=yarn.lock \ + --mount=type=bind,source=ui/.yarn/releases,target=.yarn/releases \ + --mount=type=bind,source=ui/.yarnrc.yml,target=.yarnrc.yml \ + --mount=type=cache,id=ui,target=/root/.yarn \ + \ + yarn install --immutable --check-cache; + +# copy and build ui +COPY ui ./ +RUN --mount=type=cache,id=ui,target=/root/.yarn \ set -ex; \ - \ - corepack enable; \ - yarn install --frozen-lockfile; - -# copy and build advent22_ui -COPY ui ./ -RUN set -ex; \ \ yarn dlx update-browserslist-db@latest; \ - yarn build --dest /tmp/advent22_ui; \ + yarn build --dest /opt/advent22/ui; \ # exclude webpack-bundle-analyzer output - rm -f /tmp/advent22_ui/report.html; + rm -f /opt/advent22/ui/report.html; ############### @@ -35,18 +36,18 @@ RUN set -ex; \ ARG PYTHON_VERSION FROM dhi.io/python:${PYTHON_VERSION}-dev AS install-app +COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ # env setup WORKDIR /opt/advent22 -ENV UV_WORKING_DIR="api/" \ - UV_COMPILE_BYTECODE=1 \ +ENV UV_COMPILE_BYTECODE=1 \ UV_NO_DEV=1 \ UV_LINK_MODE="copy" -RUN --mount=from=ghcr.io/astral-sh/uv,source=/uv,target=/bin/uv \ - --mount=type=cache,target=/root/.cache/uv \ - --mount=type=bind,source=api/uv.lock,target=api/uv.lock \ +RUN --mount=type=bind,source=api/uv.lock,target=api/uv.lock \ --mount=type=bind,source=api/pyproject.toml,target=api/pyproject.toml \ + --mount=type=bind,source=api/.python-version,target=api/.python-version \ + --mount=type=cache,id=api,target=/root/.cache/uv \ set -ex; \ \ # prepare data directory @@ -54,25 +55,26 @@ RUN --mount=from=ghcr.io/astral-sh/uv,source=/uv,target=/bin/uv \ chown nobody:nobody data; \ chmod u=rwx,g=rx,o=rx data; \ \ - # install advent22_api deps + # install api deps uv sync \ + --project api/ \ --locked \ --no-install-project \ --no-editable \ ; -# install advent22_api +# install api COPY api api/ -RUN --mount=from=ghcr.io/astral-sh/uv,source=/uv,target=/bin/uv \ - --mount=type=cache,target=/root/.cache/uv \ +RUN --mount=type=cache,id=api,target=/root/.cache/uv \ \ uv sync \ + --project api/ \ --locked \ --no-editable \ ; -# add prepared advent22_ui -COPY --from=build-ui /tmp/advent22_ui ui/ +# add prepared ui +COPY --from=build-ui /opt/advent22/ui ui/ ####################