diff --git a/Dockerfile b/Dockerfile index 9f9219d..d80865d 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,17 +28,16 @@ RUN set -ex; \ # exclude webpack-bundle-analyzer output rm -f /tmp/advent22_ui/report.html; -############ -# main app # -############ + +############### +# install api # +############### ARG PYTHON_VERSION -FROM python:${PYTHON_VERSION} AS production +FROM dhi.io/python:${PYTHON_VERSION}-dev AS install-api # env setup for uv -ENV \ - PATH="/opt/advent22/api/.venv/bin:$PATH" \ - UV_COMPILE_BYTECODE=1 \ +ENV UV_COMPILE_BYTECODE=1 \ UV_NO_DEV=1 \ UV_LINK_MODE="copy" @@ -68,15 +67,28 @@ RUN --mount=from=ghcr.io/astral-sh/uv,source=/uv,target=/bin/uv \ --no-editable \ ; -CMD [ "advent22" ] - # add prepared advent22_ui -COPY --from=build-ui /tmp/advent22_ui /opt/advent22/ui +COPY --from=build-ui /tmp/advent22_ui /opt/advent22/ui/ # prepare data directory +WORKDIR /opt/advent22/data +RUN chown -R nobody:nobody ./ + + +#################### +# production image # +#################### + +ARG PYTHON_VERSION +FROM dhi.io/python:${PYTHON_VERSION} AS production + +ENV PATH="/opt/advent22/api/.venv/bin:$PATH" +CMD [ "advent22" ] + +COPY --from=install-api /opt /opt/ + WORKDIR /opt/advent22/data VOLUME [ "/opt/advent22/data" ] -RUN chown -R nobody:nogroup ./ # run as unprivileged user USER nobody