This is an automated email from the ASF dual-hosted git repository. jin pushed a commit to branch dockerfile in repository https://gitbox.apache.org/repos/asf/incubator-hugegraph-ai.git
The following commit(s) were added to refs/heads/dockerfile by this push: new 446fa02 use multi stage for the Dockerfile 446fa02 is described below commit 446fa02af8321a9614dc61584820fb867145ff8a Author: imbajin <j...@apache.org> AuthorDate: Fri Mar 7 17:40:50 2025 +0800 use multi stage for the Dockerfile --- docker/Dockerfile.llm | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/docker/Dockerfile.llm b/docker/Dockerfile.llm index 39731e5..9af9a0e 100644 --- a/docker/Dockerfile.llm +++ b/docker/Dockerfile.llm @@ -1,23 +1,41 @@ # TODO: we could use 'uv' to replace the poetry + python image (Also use the slime image) -FROM python:3.10.16-bookworm +# Stage 1: Build stage (Isolating the build env) +FROM python:3.10.16-bookworm AS builder -LABEL maintainer="HugeGraph Docker Maintainers <d...@hugegraph.apache.org>" -# Create non-root user & Install dependencies -RUN useradd -m -s /bin/bash work && \ - pip install --no-cache-dir poetry +WORKDIR /build/ -WORKDIR /home/work/ +# 1.1 Install poetry +RUN pip install --no-cache-dir poetry -COPY --chown=work:work hugegraph-python-client/ ./hugegraph-python-client/ -COPY --chown=work:work hugegraph-llm/ ./hugegraph-llm/ +# 1.2 Copy source code +COPY hugegraph-python-client/ ./hugegraph-python-client/ +COPY hugegraph-llm/ ./hugegraph-llm/ -USER work -RUN cd /home/work/hugegraph-llm && \ +# 1.3 Install dependencies +RUN cd /build/hugegraph-llm && \ poetry config virtualenvs.in-project true && \ poetry lock && \ poetry install --no-interaction --no-ansi --verbose && \ - rm -rf ~/.cache/pypoetry + poetry build + +# Stage 2: Runtime stage +FROM python:3.10.16-slim-bookworm +LABEL maintainer="HugeGraph Docker Maintainers <d...@hugegraph.apache.org>" +# Create non-root user & install 'curl' for healthcheck +RUN useradd -m -s /bin/bash work && \ + apt-get update && \ + apt-get install -y --no-install-recommends curl && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /home/work/ + +# Copy only the built packages and virtual environment from the builder stage +COPY --from=builder --chown=work:work /build/hugegraph-llm/.venv /home/work/hugegraph-llm/.venv +COPY --from=builder --chown=work:work /build/hugegraph-llm/src /home/work/hugegraph-llm/src + +USER work ENV PATH="/home/work/hugegraph-llm/.venv/bin:$PATH" WORKDIR /home/work/hugegraph-llm