Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions Dockerfile.openEuler
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Copyright (C) 2025 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

# Base image for GenAIComps based OPEA Python applications
# Build: docker build -t opea/comps-base:{version}-openeuler -f Dockerfile.openEuler .

ARG IMAGE_NAME=openeuler/python
ARG IMAGE_TAG=3.11.13-oe2403lts

FROM ${IMAGE_NAME}:${IMAGE_TAG} AS base

ENV HOME=/home/user

RUN yum update -y && \
yum upgrade -y && \
yum install -y shadow && \
yum clean all && \
rm -rf /var/cache/yum

RUN useradd -m -s /bin/bash user && \
mkdir -p $HOME && \
chown -R user $HOME

WORKDIR $HOME

COPY *.toml *.py *.txt *.md LICENSE ./

ARG uvpip='uv pip install --system --no-cache-dir'
RUN pip install --no-cache-dir --upgrade pip setuptools uv && \
$uvpip -r requirements.txt

COPY comps/ comps/

ENV PYTHONPATH=$PYTHONPATH:$HOME

USER user

ENTRYPOINT ["sh", "-c", "set && ls -la"]
61 changes: 61 additions & 0 deletions comps/dataprep/src/Dockerfile.openEuler
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

FROM openeuler/python:3.11.13-oe2403lts

ENV LANG=C.UTF-8

ARG ARCH="cpu"

RUN yum update -y && yum install -y \
gcc g++ make cmake \
java-1.8.0-openjdk \
cairo \
mesa-libGL \
jemalloc-devel \
mariadb-connector-c-devel-3.3.8 \
libpq-devel \
poppler-utils \
tesseract \
ffmpeg \
wget curl \
shadow && \
yum clean all && \
rm -rf /var/cache/yum

RUN LIBREOFFICE_URL=https://mirrors.bfsu.edu.cn/libreoffice/libreoffice/stable/24.8.6/rpm/x86_64/LibreOffice_24.8.6_Linux_x86-64_rpm.tar.gz && \
wget $LIBREOFFICE_URL -O /tmp/LibreOffice_24.8.6_Linux_x86-64_rpm.tar.gz && \
tar -xvf /tmp/LibreOffice_24.8.6_Linux_x86-64_rpm.tar.gz -C /tmp && \
yum install -y /tmp/LibreOffice_24.8.6.2_Linux_x86-64_rpm/RPMS/*.rpm && \
rm -fr /tmp/LibreOffice*

RUN useradd -m -s /bin/bash user && \
mkdir -p /home/user && \
chown -R user /home/user/

COPY comps /home/user/comps

ARG uvpip='uv pip install --system --no-cache-dir'
RUN pip install --no-cache-dir --upgrade pip setuptools uv && \
if [ ${ARCH} = "cpu" ]; then \
$uvpip torch torchvision --index-url https://download.pytorch.org/whl/cpu; \
$uvpip -r /home/user/comps/dataprep/src/requirements-cpu.txt; \
else \
$uvpip -r /home/user/comps/dataprep/src/requirements-gpu.txt; \
fi

ENV PYTHONPATH=$PYTHONPATH:/home/user

RUN mkdir -p /home/user/comps/dataprep/src/uploaded_files && chown -R user /home/user/comps/dataprep/src/uploaded_files
RUN mkdir -p /data && chown -R user /data

USER user
ENV NLTK_DATA=/home/user/nltk_data
# air gapped support: predownload all needed nltk data
RUN mkdir -p /home/user/nltk_data && python -m nltk.downloader -d /home/user/nltk_data punkt_tab averaged_perceptron_tagger_eng stopwords
# air gapped support: set model cache dir
ENV HF_HUB_CACHE=/data

WORKDIR /home/user/comps/dataprep/src

ENTRYPOINT ["sh", "-c", "python $( [ \"$MULTIMODAL_DATAPREP\" = \"true\" ] && echo 'opea_dataprep_multimodal_microservice.py' || echo 'opea_dataprep_microservice.py')"]
19 changes: 19 additions & 0 deletions comps/embeddings/src/Dockerfile.openEuler
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

FROM openeuler/python:3.11.13-oe2403lts

COPY comps /home/comps

ARG uvpip='uv pip install --system --no-cache-dir'
RUN pip install --no-cache-dir --upgrade pip setuptools uv && \
$uvpip -r /home/comps/embeddings/src/requirements.txt

ENV PYTHONPATH=$PYTHONPATH:/home

WORKDIR /home/comps/embeddings/src/

ENV MULTIMODAL_EMBEDDING="false"

ENTRYPOINT ["sh", "-c", "python $( [ \"$MULTIMODAL_EMBEDDING\" = \"true\" ] && echo 'opea_multimodal_embedding_microservice.py' || echo 'opea_embedding_microservice.py')"]

38 changes: 38 additions & 0 deletions comps/guardrails/src/guardrails/Dockerfile.openEuler
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

FROM openeuler/python:3.11.13-oe2403lts

ENV LANG=C.UTF-8

ARG ARCH="cpu"

RUN yum update -y && yum install -y \
mesa-libGL \
jemalloc-devel \
shadow && \
yum clean all && \
rm -rf /var/cache/yum

RUN useradd -m -s /bin/bash user && \
mkdir -p /home/user && \
chown -R user /home/user/

COPY comps /home/user/comps

ARG uvpip='uv pip install --system --no-cache-dir'
RUN pip install --no-cache-dir --upgrade pip setuptools uv && \
if [ ${ARCH} = "cpu" ]; then \
$uvpip torch --index-url https://download.pytorch.org/whl/cpu; \
$uvpip -r /home/user/comps/guardrails/src/guardrails/requirements-cpu.txt; \
else \
$uvpip -r /home/user/comps/guardrails/src/guardrails/requirements-gpu.txt; \
fi

ENV PYTHONPATH=$PYTHONPATH:/home/user

USER user

WORKDIR /home/user/comps/guardrails/src/guardrails/

ENTRYPOINT ["python", "opea_guardrails_microservice.py"]
40 changes: 40 additions & 0 deletions comps/rerankings/src/Dockerfile.openEuler
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

FROM openeuler/python:3.11.13-oe2403lts

ENV LANG=C.UTF-8

ARG ARCH="cpu"

RUN yum update -y && yum install -y \
git \
mesa-libGL \
jemalloc-devel \
shadow && \
yum clean all && \
rm -rf /var/cache/yum

RUN useradd -m -s /bin/bash user && \
mkdir -p /home/user && \
chown -R user /home/user/

COPY comps/rerankings/src/requirements* /home/user/comps/rerankings/src/

ARG uvpip='uv pip install --system --no-cache-dir'
RUN pip install --no-cache-dir --upgrade pip setuptools uv && \
if [ ${ARCH} = "cpu" ]; then \
$uvpip torch --index-url https://download.pytorch.org/whl/cpu; \
$uvpip -r /home/user/comps/rerankings/src/requirements-cpu.txt; \
else \
$uvpip -r /home/user/comps/rerankings/src/requirements-gpu.txt; \
fi

COPY comps /home/user/comps
ENV PYTHONPATH=$PYTHONPATH:/home/user

USER user

WORKDIR /home/user/comps/rerankings/src

ENTRYPOINT ["python", "opea_reranking_microservice.py"]
43 changes: 43 additions & 0 deletions comps/retrievers/src/Dockerfile.openEuler
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

FROM openeuler/python:3.11.13-oe2403lts

ARG ARCH="cpu"

RUN yum update -y && yum install -y \
cairo \
mesa-libGL \
glib2 \
jemalloc-devel \
mariadb-connector-c-devel-3.3.8 \
gcc g++ make cmake \
shadow && \
yum clean all && \
rm -rf /var/cache/yum

RUN useradd -m -s /bin/bash user && \
mkdir -p /home/user && \
chown -R user /home/user/

COPY comps /home/user/comps

ARG uvpip='uv pip install --system --no-cache-dir'
RUN pip install --no-cache-dir --upgrade pip setuptools uv && \
if [ ${ARCH} = "cpu" ]; then \
$uvpip torch torchvision --index-url https://download.pytorch.org/whl/cpu; \
$uvpip -r /home/user/comps/retrievers/src/requirements-cpu.txt; \
else \
$uvpip -r /home/user/comps/retrievers/src/requirements-gpu.txt; \
fi

ENV PYTHONPATH=$PYTHONPATH:/home/user

USER user
ENV NLTK_DATA=/home/user/nltk_data
# air gapped support: predownload all needed nltk data
RUN mkdir -p /home/user/nltk_data && python -m nltk.downloader -d /home/user/nltk_data punkt_tab stopwords

WORKDIR /home/user/comps/retrievers/src

ENTRYPOINT ["python", "opea_retrievers_microservice.py"]
25 changes: 25 additions & 0 deletions comps/third_parties/nginx/src/Dockerfile.openEuler
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0


FROM openeuler/nginx:1.29.0-oe2403lts

RUN yum update -y && \
yum install -y gettext && \
yum clean all && \
rm -fr /var/cache/yum

COPY comps/third_parties/nginx/src/nginx.conf.template /etc/nginx/nginx.conf.template

ENV FRONTEND_SERVICE_IP=localhost
ENV FRONTEND_SERVICE_PORT=5173
ENV BACKEND_SERVICE_NAME=chatqna
ENV BACKEND_SERVICE_IP=localhost
ENV BACKEND_SERVICE_PORT=8888
ENV DATAPREP_SERVICE_IP=localhost
ENV DATAPREP_SERVICE_PORT=6007

COPY comps/third_parties/nginx/deployment/docker_compose/start-nginx.sh /usr/local/bin/start-nginx.sh
RUN chmod +x /usr/local/bin/start-nginx.sh

CMD ["/usr/local/bin/start-nginx.sh"]
23 changes: 11 additions & 12 deletions tests/dataprep/test_dataprep_redis.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

set -x
set -xe

WORKPATH=$(dirname "$PWD")
LOG_PATH="$WORKPATH/tests"
Expand All @@ -18,7 +18,8 @@ source ${SCRIPT_DIR}/dataprep_utils.sh
function build_docker_images() {
cd $WORKPATH
echo $(pwd)
docker build -t opea/dataprep:${TAG} --build-arg https_proxy=$https_proxy --build-arg http_proxy=$http_proxy -f comps/dataprep/src/Dockerfile .
dockerfile_name="comps/dataprep/src/$1"
docker build -t opea/dataprep:${TAG} --build-arg https_proxy=$https_proxy --build-arg http_proxy=$http_proxy -f "${dockerfile_name}" .
if [ $? -ne 0 ]; then
echo "opea/dataprep built fail"
exit 1
Expand Down Expand Up @@ -118,21 +119,14 @@ function validate_microservice() {

}

function stop_docker() {
cid=$(docker ps -aq --filter "name=dataprep-redis-server*" --filter "name=redis-vector-*" --filter "name=tei-embedding-*")
if [[ ! -z "$cid" ]]; then docker stop $cid && docker rm $cid && sleep 1s; fi
}

function stop_service() {
cd $WORKPATH/comps/dataprep/deployment/docker_compose/
docker compose down || true
}

function main() {

stop_docker

build_docker_images
build_docker_images "Dockerfile"
trap stop_service EXIT

echo "Test normal env ..."
Expand All @@ -148,8 +142,13 @@ function main() {
stop_service
fi

stop_docker
echo y | docker system prune
echo "Test with openEuler OS ..."
build_docker_images "Dockerfile.openEuler"
start_service
validate_microservice
stop_service

docker system prune -f

}

Expand Down
24 changes: 17 additions & 7 deletions tests/embeddings/test_embeddings_tei.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ export DATA_PATH=${model_cache}
function build_docker_images() {
cd $WORKPATH
echo $(pwd)
docker build --no-cache -t opea/embedding:comps --build-arg https_proxy=$https_proxy --build-arg http_proxy=$http_proxy -f comps/embeddings/src/Dockerfile .
dockerfile_name="comps/embeddings/src/$1"
docker build --no-cache -t opea/embedding:comps --build-arg https_proxy=$https_proxy --build-arg http_proxy=$http_proxy -f "${dockerfile_name}" .
if [ $? -ne 0 ]; then
echo "opea/embedding built fail"
exit 1
Expand Down Expand Up @@ -73,22 +74,31 @@ function validate_microservice_with_openai() {
}

function stop_docker() {
cid=$(docker ps -aq --filter "name=tei-embedding-*")
if [[ ! -z "$cid" ]]; then docker stop $cid && docker rm $cid && sleep 1s; fi
function stop_service() {
cd $WORKPATH/comps/embeddings/deployment/docker_compose/
docker compose down || true
}
}

function main() {

stop_docker
build_docker_images "Dockerfile"
trap stop_service EXIT

build_docker_images
echo "Test normal env ..."
start_service
validate_microservice
validate_microservice_with_openai
stop_service

echo "Test with openEuler OS ..."
build_docker_images "Dockerfile.openEuler"
start_service
validate_microservice
validate_microservice_with_openai
stop_service

stop_docker
echo y | docker system prune
docker system prune -f

}

Expand Down
Loading