Files
GenAIExamples/GraphRAG/Dockerfile
Eero Tamminen 0eae391fda Use staged builds to minimize final image sizes (#1031)
Staged image builds so that final images do not have redundant things like:
- Git tool and its deps
- Git repo history
- Test directories

Fixes: #225
Signed-off-by: Eero Tamminen <eero.t.tamminen@intel.com>
2025-01-16 11:14:47 +08:00

50 lines
1.2 KiB
Docker

# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
# Stage 1: base setup used by other stages
FROM python:3.11-slim AS base
# get security updates
RUN apt-get update && apt-get upgrade -y && \
apt-get clean && rm -rf /var/lib/apt/lists/*
ENV HOME=/home/user
RUN useradd -m -s /bin/bash user && \
mkdir -p $HOME && \
chown -R user $HOME
WORKDIR $HOME
# Stage 2: latest GenAIComps sources
FROM base AS git
RUN apt-get update && apt-get install -y --no-install-recommends git
RUN git clone --depth 1 https://github.com/opea-project/GenAIComps.git
# Stage 3: common layer shared by services using GenAIComps
FROM base AS comps-base
# copy just relevant parts
COPY --from=git $HOME/GenAIComps/comps $HOME/GenAIComps/comps
COPY --from=git $HOME/GenAIComps/*.* $HOME/GenAIComps/LICENSE $HOME/GenAIComps/
WORKDIR $HOME/GenAIComps
RUN pip install --no-cache-dir --upgrade pip setuptools && \
pip install --no-cache-dir -r $HOME/GenAIComps/requirements.txt
WORKDIR $HOME
ENV PYTHONPATH=$PYTHONPATH:$HOME/GenAIComps
USER user
# Stage 4: unique part
FROM comps-base
COPY ./graphrag.py $HOME/graphrag.py
ENTRYPOINT ["python", "graphrag.py"]