DB-GPT/docker/base/build_image.sh
Fangyin Cheng 65c875db20
feat(core): Support higher-order operators (#1984)
Co-authored-by: 谨欣 <echo.cmy@antgroup.com>
2024-09-09 10:15:37 +08:00

144 lines
3.8 KiB
Bash
Executable File

#!/bin/bash
SCRIPT_LOCATION=$0
cd "$(dirname "$SCRIPT_LOCATION")"
WORK_DIR=$(pwd)
BASE_IMAGE_DEFAULT="nvidia/cuda:12.1.0-runtime-ubuntu22.04"
BASE_IMAGE_DEFAULT_CPU="ubuntu:22.04"
BASE_IMAGE=$BASE_IMAGE_DEFAULT
IMAGE_NAME="eosphorosai/dbgpt"
IMAGE_NAME_ARGS=""
# zh: https://pypi.tuna.tsinghua.edu.cn/simple
PIP_INDEX_URL="https://pypi.org/simple"
# en or zh
LANGUAGE="en"
BUILD_LOCAL_CODE="true"
LOAD_EXAMPLES="true"
BUILD_NETWORK=""
DB_GPT_INSTALL_MODEL="default"
DOCKERFILE="Dockerfile"
IMAGE_NAME_SUFFIX=""
usage () {
echo "USAGE: $0 [--base-image nvidia/cuda:12.1.0-runtime-ubuntu22.04] [--image-name db-gpt]"
echo " [-b|--base-image base image name] Base image name"
echo " [-n|--image-name image name] Current image name, default: db-gpt"
echo " [--image-name-suffix image name suffix] Image name suffix"
echo " [-i|--pip-index-url pip index url] Pip index url, default: https://pypi.org/simple"
echo " [--language en or zh] You language, default: en"
echo " [--build-local-code true or false] Whether to use the local project code to package the image, default: true"
echo " [--load-examples true or false] Whether to load examples to default database default: true"
echo " [--network network name] The network of docker build"
echo " [--install-mode mode name] Installation mode name, default: default, If you completely use openai's service, you can set the mode name to 'openai'"
echo " [-f|--dockerfile dockerfile] Dockerfile name, default: Dockerfile"
echo " [-h|--help] Usage message"
}
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
-b|--base-image)
BASE_IMAGE="$2"
shift # past argument
shift # past value
;;
-n|--image-name)
IMAGE_NAME_ARGS="$2"
shift # past argument
shift # past value
;;
--image-name-suffix)
IMAGE_NAME_SUFFIX="$2"
shift # past argument
shift # past value
;;
-i|--pip-index-url)
PIP_INDEX_URL="$2"
shift
shift
;;
--language)
LANGUAGE="$2"
shift
shift
;;
--build-local-code)
BUILD_LOCAL_CODE="$2"
shift
shift
;;
--load-examples)
LOAD_EXAMPLES="$2"
shift
shift
;;
--network)
BUILD_NETWORK=" --network $2 "
shift # past argument
shift # past value
;;
-h|--help)
help="true"
shift
;;
--install-mode)
DB_GPT_INSTALL_MODEL="$2"
shift # past argument
shift # past value
;;
-f|--dockerfile)
DOCKERFILE="$2"
shift # past argument
shift # past value
;;
-h|--help)
help="true"
shift
;;
*)
usage
exit 1
;;
esac
done
if [[ $help ]]; then
usage
exit 0
fi
if [ "$DB_GPT_INSTALL_MODEL" != "default" ]; then
IMAGE_NAME="$IMAGE_NAME-$DB_GPT_INSTALL_MODEL"
echo "install mode is not 'default', set image name to: ${IMAGE_NAME}"
fi
if [ -z "$IMAGE_NAME_ARGS" ]; then
if [ "$DB_GPT_INSTALL_MODEL" == "openai" ]; then
# Use cpu image
BASE_IMAGE=$BASE_IMAGE_DEFAULT_CPU
fi
else
# User input image is not empty
BASE_IMAGE=$IMAGE_NAME_ARGS
fi
if [ -n "$IMAGE_NAME_SUFFIX" ]; then
IMAGE_NAME="$IMAGE_NAME-$IMAGE_NAME_SUFFIX"
fi
echo "Begin build docker image, base image: ${BASE_IMAGE}, target image name: ${IMAGE_NAME}"
docker build $BUILD_NETWORK \
--build-arg BASE_IMAGE=$BASE_IMAGE \
--build-arg PIP_INDEX_URL=$PIP_INDEX_URL \
--build-arg LANGUAGE=$LANGUAGE \
--build-arg BUILD_LOCAL_CODE=$BUILD_LOCAL_CODE \
--build-arg LOAD_EXAMPLES=$LOAD_EXAMPLES \
--build-arg DB_GPT_INSTALL_MODEL=$DB_GPT_INSTALL_MODEL \
-f $DOCKERFILE \
-t $IMAGE_NAME $WORK_DIR/../../