From fca9c7622e0b92725c7fdfcf23341558cbbacbdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn-Michael=20Miehe?= Date: Fri, 20 Feb 2026 00:28:48 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20final=20image=20now=20uses=20dhi=20?= =?UTF-8?q?base=20image?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 50 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9f9219d..4165140 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ ARG NODE_VERSION=24 -ARG PYTHON_VERSION=3.14-slim +ARG PYTHON_VERSION=3.14 ############ # build ui # @@ -28,29 +28,33 @@ RUN set -ex; \ # exclude webpack-bundle-analyzer output rm -f /tmp/advent22_ui/report.html; -############ -# main app # -############ + +############### +# install app # +############### ARG PYTHON_VERSION -FROM python:${PYTHON_VERSION} AS production +FROM dhi.io/python:${PYTHON_VERSION}-dev AS install-app -# env setup for uv -ENV \ - PATH="/opt/advent22/api/.venv/bin:$PATH" \ +# env setup +WORKDIR /opt/advent22 +ENV UV_WORKING_DIR="api/" \ UV_COMPILE_BYTECODE=1 \ UV_NO_DEV=1 \ UV_LINK_MODE="copy" -EXPOSE 8000 +# prepare data directory +RUN set -ex; \ + \ + mkdir data; \ + chown nobody:nobody data; \ + chmod u=rwx,g=rx,o=rx data; # install advent22_api deps -WORKDIR /opt/advent22/api - 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=uv.lock \ - --mount=type=bind,source=api/pyproject.toml,target=pyproject.toml \ + --mount=type=bind,source=api/uv.lock,target=api/uv.lock \ + --mount=type=bind,source=api/pyproject.toml,target=api/pyproject.toml \ \ uv sync \ --locked \ @@ -59,7 +63,7 @@ RUN --mount=from=ghcr.io/astral-sh/uv,source=/uv,target=/bin/uv \ ; # install advent22_api -COPY api ./ +COPY api api/ RUN --mount=from=ghcr.io/astral-sh/uv,source=/uv,target=/bin/uv \ --mount=type=cache,target=/root/.cache/uv \ \ @@ -68,15 +72,25 @@ RUN --mount=from=ghcr.io/astral-sh/uv,source=/uv,target=/bin/uv \ --no-editable \ ; +# add prepared advent22_ui +COPY --from=build-ui /tmp/advent22_ui ui/ + + +#################### +# production image # +#################### + +ARG PYTHON_VERSION +FROM dhi.io/python:${PYTHON_VERSION} AS production + +ENV PATH="/opt/advent22/api/.venv/bin:$PATH" +EXPOSE 8000 CMD [ "advent22" ] -# add prepared advent22_ui -COPY --from=build-ui /tmp/advent22_ui /opt/advent22/ui +COPY --from=install-app /opt /opt/ -# prepare data directory WORKDIR /opt/advent22/data VOLUME [ "/opt/advent22/data" ] -RUN chown -R nobody:nogroup ./ # run as unprivileged user USER nobody