Support launch as Non-Root user in all published container images. (#406)

Signed-off-by: zepan <ze.pan@intel.com>
This commit is contained in:
ZePan110
2024-08-12 09:31:44 +08:00
committed by GitHub
parent ac4a77798e
commit 1eaf6b7afd
21 changed files with 149 additions and 81 deletions

View File

@@ -3,15 +3,20 @@
FROM python:3.11-slim
RUN useradd -m -s /bin/bash user && \
mkdir -p /home/user && \
chown -R user /home/user/
USER user
ENV LANG=C.UTF-8
COPY comps /home/comps
COPY comps /home/user/comps
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r /home/comps/asr/requirements.txt
pip install --no-cache-dir -r /home/user/comps/asr/requirements.txt
ENV PYTHONPATH=$PYTHONPATH:/home
ENV PYTHONPATH=$PYTHONPATH:/home/user
WORKDIR /home/comps/asr
WORKDIR /home/user/comps/asr
ENTRYPOINT ["python", "asr.py"]

View File

@@ -3,21 +3,28 @@
FROM python:3.11-slim
RUN useradd -m -s /bin/bash user && \
mkdir -p /home/user && \
chown -R user /home/user/
# Set environment variables
ENV LANG=en_US.UTF-8
ENV PYTHONPATH=/home/user
# Install system dependencies
RUN apt-get update \
&& apt-get install -y ffmpeg
COPY comps /home/comps
COPY --chown=user:user comps /home/user/comps
USER user
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r /home/comps/asr/requirements.txt
pip install --no-cache-dir -r /home/user/comps/asr/requirements.txt && \
pip list
ENV PYTHONPATH=$PYTHONPATH:/home
ENV PYTHONPATH=$PYTHONPATH:/home/user
WORKDIR /home/comps/asr/whisper
WORKDIR /home/user/comps/asr/whisper
ENTRYPOINT ["python", "whisper_server.py", "--device", "cpu"]

View File

@@ -4,6 +4,10 @@
# HABANA environment
FROM vault.habana.ai/gaudi-docker/1.16.1/ubuntu22.04/habanalabs/pytorch-installer-2.2.2:latest AS hpu
RUN useradd -m -s /bin/bash user && \
mkdir -p /home/user && \
chown -R user /home/user/
# Set environment variables
ENV LANG=en_US.UTF-8
ENV PYTHONPATH=/home/user:/usr/lib/habanalabs/:/optimum-habana
@@ -12,15 +16,17 @@ ENV PYTHONPATH=/home/user:/usr/lib/habanalabs/:/optimum-habana
RUN apt-get update \
&& apt-get install -y ffmpeg
COPY comps /home/comps
COPY --chown=user:user comps /home/user/comps
USER user
# Install requirements and optimum habana
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r /home/comps/asr/requirements.txt && \
pip install --no-cache-dir -r /home/user/comps/asr/requirements.txt && \
pip install optimum[habana]
ENV PYTHONPATH=$PYTHONPATH:/home
ENV PYTHONPATH=$PYTHONPATH:/home/user
WORKDIR /home/comps/asr/whisper
WORKDIR /home/user/comps/asr/whisper
ENTRYPOINT ["python", "whisper_server.py", "--device", "hpu"]

View File

@@ -2,22 +2,26 @@
# SPDX-License-Identifier: Apache-2.0
From ubuntu:22.04
RUN useradd -m -s /bin/bash user && \
mkdir -p /home/user && \
chown -R user /home/user/
ARG DEBIAN_FRONTEND=noninteractive
ENV GLIBC_TUNABLES glibc.cpu.x86_shstk=permissive
COPY comps /root/comps
RUN apt update && apt install -y python3 python3-pip
USER user
COPY comps /home/user/comps
RUN pip3 install torch==2.2.2 torchvision --index-url https://download.pytorch.org/whl/cpu
RUN pip3 install intel-extension-for-pytorch==2.2.0
RUN pip3 install transformers
RUN pip3 install llmspec mosec
RUN cd /root/ && export HF_ENDPOINT=https://hf-mirror.com && huggingface-cli download --resume-download BAAI/bge-large-zh-v1.5 --local-dir /root/bge-large-zh-v1.5
RUN cd /home/user/ && export HF_ENDPOINT=https://hf-mirror.com && huggingface-cli download --resume-download BAAI/bge-large-zh-v1.5 --local-dir /home/user/bge-large-zh-v1.5
ENV EMB_MODEL="/root/bge-large-zh-v1.5/"
ENV EMB_MODEL="/home/user/bge-large-zh-v1.5/"
WORKDIR /root/comps/embeddings/langchain-mosec/mosec-docker
WORKDIR /home/user/comps/embeddings/langchain-mosec/mosec-docker
CMD ["python3", "server-ipex.py"]

View File

@@ -95,4 +95,3 @@ RUN chmod +x /root/comps/llms/text-generation/vllm-xft/run.sh
WORKDIR /root/comps/llms/text-generation/vllm-xft/
ENTRYPOINT ["/root/comps/llms/text-generation/vllm-xft/run.sh"]

View File

@@ -1,8 +1,12 @@
# FROM vault.habana.ai/gaudi-docker/1.15.1/ubuntu22.04/habanalabs/pytorch-installer-2.2.0:latest
FROM vault.habana.ai/gaudi-docker/1.16.0/ubuntu22.04/habanalabs/pytorch-installer-2.2.2:latest
RUN useradd -m -s /bin/bash user && \
mkdir -p /home/user && \
chown -R user /home/user/
ENV LANG=en_US.UTF-8
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \
service ssh restart
USER user
WORKDIR /root
RUN pip install --upgrade-strategy eager optimum[habana]
@@ -11,9 +15,6 @@ RUN pip install -v git+https://github.com/HabanaAI/vllm-fork.git@cf6952d
RUN pip install setuptools
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \
service ssh restart
ENV no_proxy=localhost,127.0.0.1
ENV PT_HPU_LAZY_ACC_PAR_MODE=0

View File

@@ -1,6 +1,8 @@
ARG UBUNTU_VER=22.04
FROM ubuntu:${UBUNTU_VER} as devel
RUN useradd -m -s /bin/bash user && \
mkdir -p /home/user && \
chown -R user /home/user/
ARG REPO_COMPS=https://github.com/opea-project/GenAIComps.git
ARG BRANCH=main
ENV LANG=C.UTF-8
@@ -16,7 +18,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends --fix-missing \
git \
vim \
wget
USER user
RUN git clone --single-branch --branch=${BRANCH} ${REPO_COMPS} /home/user/GenAIComps/ && \
cd /home/user/GenAIComps/ && python3 setup.py install && \
pip install --no-cache-dir -r /home/user/GenAIComps/comps/llms/utils/lm-eval/requirements.txt

View File

@@ -2,17 +2,20 @@
# SPDX-License-Identifier: Apache-2.0
FROM python:3.11-slim
RUN useradd -m -s /bin/bash user && \
mkdir -p /home/user && \
chown -R user /home/user/
USER user
# Set environment variables
ENV LANG=en_US.UTF-8
COPY comps /home/comps
COPY comps /home/user/comps
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r /home/comps/lvms/requirements.txt
pip install --no-cache-dir -r /home/user/comps/lvms/requirements.txt
ENV PYTHONPATH=$PYTHONPATH:/home
ENV PYTHONPATH=$PYTHONPATH:/home/user
WORKDIR /home/comps/lvms
WORKDIR /home/user/comps/lvms
ENTRYPOINT ["python", "lvm.py"]

View File

@@ -2,18 +2,21 @@
# SPDX-License-Identifier: Apache-2.0
FROM python:3.11-slim
RUN useradd -m -s /bin/bash user && \
mkdir -p /home/user && \
chown -R user /home/user/
USER user
# Set environment variables
ENV LANG=en_US.UTF-8
ENV PYTHONPATH=/home/user:/usr/lib/habanalabs/:/optimum-habana
COPY comps /home/comps
COPY comps /home/user/comps
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r /home/comps/lvms/requirements.txt
pip install --no-cache-dir -r /home/user/comps/lvms/requirements.txt
ENV PYTHONPATH=$PYTHONPATH:/home
ENV PYTHONPATH=$PYTHONPATH:/home/user
WORKDIR /home/comps/lvms/llava
WORKDIR /home/user/comps/lvms/llava
ENTRYPOINT ["python", "llava_server.py", "--device", "cpu"]

View File

@@ -3,21 +3,25 @@
# HABANA environment
FROM vault.habana.ai/gaudi-docker/1.16.1/ubuntu22.04/habanalabs/pytorch-installer-2.2.2:latest AS hpu
RUN rm -rf /etc/ssh/ssh_host*
RUN useradd -m -s /bin/bash user && \
mkdir -p /home/user && \
chown -R user /home/user/
RUN rm -rf /etc/ssh/ssh_host*
USER user
# Set environment variables
ENV LANG=en_US.UTF-8
ENV PYTHONPATH=/home/user:/usr/lib/habanalabs/:/optimum-habana
COPY comps /home/comps
COPY comps /home/user/comps
# Install requirements and optimum habana
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r /home/comps/lvms/requirements.txt && \
pip install --no-cache-dir -r /home/user/comps/lvms/requirements.txt && \
pip install optimum[habana]
ENV PYTHONPATH=$PYTHONPATH:/home
ENV PYTHONPATH=$PYTHONPATH:/home/user
WORKDIR /home/comps/lvms/llava
WORKDIR /home/user/comps/lvms/llava
ENTRYPOINT ["python", "llava_server.py"]

View File

@@ -2,22 +2,26 @@
# SPDX-License-Identifier: Apache-2.0
From ubuntu:22.04
RUN useradd -m -s /bin/bash user && \
mkdir -p /home/user && \
chown -R user /home/user/
ARG DEBIAN_FRONTEND=noninteractive
ENV GLIBC_TUNABLES glibc.cpu.x86_shstk=permissive
COPY comps /root/comps
COPY comps /home/user/comps
RUN apt update && apt install -y python3 python3-pip
USER user
RUN pip3 install torch==2.2.2 torchvision --trusted-host download.pytorch.org --index-url https://download.pytorch.org/whl/cpu
RUN pip3 install intel-extension-for-pytorch==2.2.0
RUN pip3 install transformers sentence-transformers
RUN pip3 install llmspec mosec
RUN cd /root/ && export HF_ENDPOINT=https://hf-mirror.com && huggingface-cli download --resume-download BAAI/bge-reranker-large --local-dir /root/bge-reranker-large
RUN cd /home/user/ && export HF_ENDPOINT=https://hf-mirror.com && huggingface-cli download --resume-download BAAI/bge-reranker-large --local-dir /home/user/bge-reranker-large
ENV EMB_MODEL="/root/bge-reranker-large/"
ENV EMB_MODEL="/home/user/bge-reranker-large/"
WORKDIR /root/comps/reranks/langchain-mosec/mosec-docker
WORKDIR /home/user/comps/reranks/langchain-mosec/mosec-docker
CMD ["python3", "server-ipex.py"]

View File

@@ -2,16 +2,19 @@
# SPDX-License-Identifier: Apache-2.0
FROM python:3.11-slim
RUN useradd -m -s /bin/bash user && \
mkdir -p /home/user && \
chown -R user /home/user/
USER user
ENV LANG=C.UTF-8
COPY comps /home/comps
COPY comps /home/user/comps
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r /home/comps/tts/requirements.txt
pip install --no-cache-dir -r /home/user/comps/tts/requirements.txt
ENV PYTHONPATH=$PYTHONPATH:/home
ENV PYTHONPATH=$PYTHONPATH:/home/user
WORKDIR /home/comps/tts
WORKDIR /home/user/comps/tts
ENTRYPOINT ["python", "tts.py"]

View File

@@ -2,6 +2,9 @@
# SPDX-License-Identifier: Apache-2.0
FROM python:3.11-slim
RUN useradd -m -s /bin/bash user && \
mkdir -p /home/user && \
chown -R user /home/user/
# Set environment variables
ENV LANG=en_US.UTF-8
@@ -12,13 +15,15 @@ RUN apt-get update \
&& apt-get install -y ffmpeg \
&& apt-get install -y curl
COPY comps /home/comps
COPY --chown=user:user comps /home/user/comps
USER user
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r /home/comps/tts/requirements.txt
pip install --no-cache-dir -r /home/user/comps/tts/requirements.txt
ENV PYTHONPATH=$PYTHONPATH:/home
ENV PYTHONPATH=$PYTHONPATH:/home/user
WORKDIR /home/comps/tts/speecht5
WORKDIR /home/user/comps/tts/speecht5
ENTRYPOINT ["python", "speecht5_server.py", "--device", "cpu"]

View File

@@ -3,7 +3,9 @@
# HABANA environment
FROM vault.habana.ai/gaudi-docker/1.16.1/ubuntu22.04/habanalabs/pytorch-installer-2.2.2:latest AS hpu
RUN useradd -m -s /bin/bash user && \
mkdir -p /home/user && \
chown -R user /home/user/
RUN rm -rf /etc/ssh/ssh_host*
# Set environment variables
@@ -15,15 +17,17 @@ RUN apt-get update \
&& apt-get install -y ffmpeg \
&& apt-get install -y curl
COPY comps /home/comps
COPY --chown=user:user comps /home/user/comps
USER user
# Install requirements and optimum habana
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir -r /home/comps/tts/requirements.txt && \
pip install --no-cache-dir -r /home/user/comps/tts/requirements.txt && \
pip install optimum[habana]
ENV PYTHONPATH=$PYTHONPATH:/home
ENV PYTHONPATH=$PYTHONPATH:/home/user
WORKDIR /home/comps/tts/speecht5
WORKDIR /home/user/comps/tts/speecht5
ENTRYPOINT ["python", "speecht5_server.py", "--device", "hpu"]

View File

@@ -2,14 +2,16 @@
# SPDX-License-Identifier: Apache-2.0
FROM langchain/langchain:latest
RUN useradd -m -s /bin/bash user && \
mkdir -p /home/user && \
chown -R user /home/user/
ARG ARCH="cpu" # Set this to "cpu" or "gpu"
RUN apt-get update -y && apt-get install -y --no-install-recommends --fix-missing \
libgl1-mesa-glx \
libjemalloc-dev \
vim
USER user
COPY comps /home/user/comps
RUN pip install --no-cache-dir --upgrade pip && \

View File

@@ -2,7 +2,7 @@
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
set -xe
set -x
WORKPATH=$(dirname "$PWD")
ip_address=$(hostname -I | awk '{print $1}')
@@ -10,23 +10,25 @@ ip_address=$(hostname -I | awk '{print $1}')
function build_docker_images() {
cd $WORKPATH
echo $(pwd)
docker build -t opea/whisper:latest -f comps/asr/whisper/Dockerfile .
docker build -t opea/asr:latest -f comps/asr/Dockerfile .
docker build -t opea/whisper:comps -f comps/asr/whisper/Dockerfile .
docker build -t opea/asr:comps -f comps/asr/Dockerfile .
}
function start_service() {
unset http_proxy
docker run -d --name="test-comps-asr-whisper" -e http_proxy=$http_proxy -e https_proxy=$https_proxy -p 7066:7066 --ipc=host opea/whisper:latest
docker run -d --name="test-comps-asr" -e ASR_ENDPOINT=http://$ip_address:7066 -e http_proxy=$http_proxy -e https_proxy=$https_proxy -p 9099:9099 --ipc=host opea/asr:latest
docker run -d --name="test-comps-asr-whisper" -e http_proxy=$http_proxy -e https_proxy=$https_proxy -p 7066:7066 --ipc=host opea/whisper:comps
docker run -d --name="test-comps-asr" -e ASR_ENDPOINT=http://$ip_address:7066 -e http_proxy=$http_proxy -e https_proxy=$https_proxy -p 9089:9099 --ipc=host opea/asr:comps
sleep 3m
}
function validate_microservice() {
result=$(http_proxy="" curl http://localhost:9099/v1/audio/transcriptions -XPOST -d '{"byte_str": "UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"}' -H 'Content-Type: application/json')
result=$(http_proxy="" curl http://localhost:9089/v1/audio/transcriptions -XPOST -d '{"byte_str": "UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"}' -H 'Content-Type: application/json')
if [[ $result == *"you"* ]]; then
echo "Result correct."
else
echo "Result wrong."
docker logs test-comps-asr-whisper
docker logs test-comps-asr
exit 1
fi

View File

@@ -2,7 +2,7 @@
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
set -xe
set -x
WORKPATH=$(dirname "$PWD")
ip_address=$(hostname -I | awk '{print $1}')
@@ -36,6 +36,14 @@ function validate_microservice() {
-X POST \
-d '{"text":"What is Deep Learning?"}' \
-H 'Content-Type: application/json'
if [ $? -eq 0 ]; then
echo "curl command executed successfully"
else
echo "curl command failed"
docker logs test-comps-embedding-langchain-mosec-endpoint
docker logs test-comps-embedding-langchain-mosec-server
exit 1
fi
}
function stop_docker() {

View File

@@ -2,7 +2,7 @@
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
set -xe
set -x
WORKPATH=$(dirname "$PWD")
ip_address=$(hostname -I | awk '{print $1}')
@@ -10,23 +10,26 @@ ip_address=$(hostname -I | awk '{print $1}')
function build_docker_images() {
cd $WORKPATH
echo $(pwd)
docker build -t opea/llava:latest -f comps/lvms/llava/Dockerfile .
docker build --no-cache -t opea/lvm:latest -f comps/lvms/Dockerfile .
docker build -t opea/llava:comps -f comps/lvms/llava/Dockerfile .
docker build --no-cache -t opea/lvm:comps -f comps/lvms/Dockerfile .
}
function start_service() {
unset http_proxy
docker run -d --name="test-comps-lvm-llava" -e http_proxy=$http_proxy -e https_proxy=$https_proxy -p 8399:8399 --ipc=host opea/llava:latest
docker run -d --name="test-comps-lvm" -e LVM_ENDPOINT=http://$ip_address:8399 -e http_proxy=$http_proxy -e https_proxy=$https_proxy -p 9399:9399 --ipc=host opea/lvm:latest
docker run -d --name="test-comps-lvm-llava" -e http_proxy=$http_proxy -e https_proxy=$https_proxy -p 8399:8399 --ipc=host opea/llava:comps
docker run -d --name="test-comps-lvm" -e LVM_ENDPOINT=http://$ip_address:8399 -e http_proxy=$http_proxy -e https_proxy=$https_proxy -p 9399:9399 --ipc=host opea/lvm:comps
sleep 8m
}
function validate_microservice() {
result=$(http_proxy="" curl http://localhost:9399/v1/lvm -XPOST -d '{"image": "iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAFUlEQVR42mP8/5+hnoEIwDiqkL4KAcT9GO0U4BxoAAAAAElFTkSuQmCC", "prompt":"What is this?"}' -H 'Content-Type: application/json')
if [[ $result == *"yellow"* ]]; then
echo "Result correct."
else
echo "Result wrong."
docker logs test-comps-lvm-llava
docker logs test-comps-lvm
exit 1
fi

View File

@@ -2,7 +2,7 @@
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
set -xe
set -x
WORKPATH=$(dirname "$PWD")
ip_address=$(hostname -I | awk '{print $1}')

View File

@@ -2,7 +2,7 @@
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
set -xe
set -x
WORKPATH=$(dirname "$PWD")
ip_address=$(hostname -I | awk '{print $1}')
@@ -10,14 +10,14 @@ ip_address=$(hostname -I | awk '{print $1}')
function build_docker_images() {
cd $WORKPATH
echo $(pwd)
docker build -t opea/speecht5:latest -f comps/tts/speecht5/Dockerfile .
docker build -t opea/tts:latest -f comps/tts/Dockerfile .
docker build -t opea/speecht5:comps -f comps/tts/speecht5/Dockerfile .
docker build -t opea/tts:comps -f comps/tts/Dockerfile .
}
function start_service() {
unset http_proxy
docker run -d --name="test-comps-tts-speecht5" -e http_proxy=$http_proxy -e https_proxy=$https_proxy -p 7055:7055 --ipc=host opea/speecht5:latest
docker run -d --name="test-comps-tts" -e TTS_ENDPOINT=http://$ip_address:7055 -e http_proxy=$http_proxy -e https_proxy=$https_proxy -p 9088:9088 --ipc=host opea/tts:latest
docker run -d --name="test-comps-tts-speecht5" -e http_proxy=$http_proxy -e https_proxy=$https_proxy -p 7055:7055 --ipc=host opea/speecht5:comps
docker run -d --name="test-comps-tts" -e TTS_ENDPOINT=http://$ip_address:7055 -e http_proxy=$http_proxy -e https_proxy=$https_proxy -p 9088:9088 --ipc=host opea/tts:comps
sleep 3m
}
@@ -27,6 +27,8 @@ function validate_microservice() {
echo "Result correct."
else
echo "Result wrong."
docker logs test-comps-tts-speecht5
docker logs test-comps-tts
exit 1
fi

View File

@@ -2,7 +2,7 @@
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
set -xe
set -x
WORKPATH=$(dirname "$PWD")
ip_address=$(hostname -I | awk '{print $1}')
@@ -36,6 +36,7 @@ function validate_microservice() {
-d "{\"text\":\"What is OPEA?\",\"embedding\":${test_embedding}}" \
-H 'Content-Type: application/json'
docker logs test-comps-web-retriever-tei-endpoint
docker logs test-comps-web-retriever-chroma-server
}
function stop_docker() {