|
|
@@ -2,19 +2,125 @@
|
|
|
|
|
|
set -e
|
|
|
|
|
|
-# 配置
|
|
|
-IMAGE_NAME="ai-flow-py"
|
|
|
-IMAGE_TAG="1.0.1"
|
|
|
-
|
|
|
-echo "🚀 开始构建 AI Flow 项目..."
|
|
|
-
|
|
|
-echo "🔨 构建Docker镜像..."
|
|
|
-docker buildx build --platform linux/amd64 -t "$IMAGE_NAME:$IMAGE_TAG" .
|
|
|
-docker save "$IMAGE_NAME:$IMAGE_TAG" | gzip > "$IMAGE_NAME".tar.gz
|
|
|
-scp ai-flow-py.tar.gz root@34.146.228.227:/root/
|
|
|
-# docker run -d --name ai-flow -p 8080:8080 -e SPRING_REDIS_HOST=10.146.0.3 ai-flow:latest
|
|
|
-# docker run -d --name ai-flow -p 8080:8080 -e SPRING_REDIS_HOST=10.146.0.2 ai-flow:latest
|
|
|
-# docker run -d --name ai-flow-py -p 8080:8080 -e AI_FLOW_REDIS_HOST=10.146.0.2 ai-flow-py:1.0.0
|
|
|
-# docker save ai-flow:latest | gzip > ai-flow-latest.tar.gz
|
|
|
-# gzip -d ai-flow-latest.tar.gz
|
|
|
-# docker load -i ai-flow-latest.tar
|
|
|
+project_dir=$(pwd)
|
|
|
+version='1.0.1'
|
|
|
+env='dev'
|
|
|
+image_name='ai-flow-py'
|
|
|
+registry='registry.cn-shenzhen.aliyuncs.com/bantbox'
|
|
|
+
|
|
|
+REMOTE_DEV="root@192.168.0.155"
|
|
|
+REMOTE_TEST="root@34.146.228.227"
|
|
|
+REMOTE_PRO="root@34.146.222.45"
|
|
|
+
|
|
|
+usage() {
|
|
|
+ echo -e "\n"
|
|
|
+ echo -e "Usage: \n\t$0 [-e env] [-v version] [-h]\n"
|
|
|
+ echo -e "[-h]: Show usage\n"
|
|
|
+ echo -e "[-e] Env: Build env. (dev/test/pro)"
|
|
|
+ echo -e "[-v] Version: Version of build.\n"
|
|
|
+}
|
|
|
+
|
|
|
+login() {
|
|
|
+ echo "[+] Logging in to Docker registry..."
|
|
|
+ docker login --username=arche@1030463161912241 --password=bantbox@2021 registry.cn-shenzhen.aliyuncs.com
|
|
|
+}
|
|
|
+
|
|
|
+build() {
|
|
|
+ local full_tag="${registry}/${image_name}:${version}-${env}"
|
|
|
+
|
|
|
+ echo "[+] ================================"
|
|
|
+ echo "[+] Start building..."
|
|
|
+ echo "[+] Image: ${image_name}"
|
|
|
+ echo "[+] Version: ${version}"
|
|
|
+ echo "[+] Env: ${env}"
|
|
|
+ echo "[+] Tag: ${full_tag}"
|
|
|
+ echo "[+] ================================"
|
|
|
+
|
|
|
+ echo "[+] Building Docker image (linux/amd64)..."
|
|
|
+ docker buildx build --platform linux/amd64 -t "${image_name}:${version}" .
|
|
|
+
|
|
|
+ echo "[+] Tagging image..."
|
|
|
+ docker tag "${image_name}:${version}" "${full_tag}"
|
|
|
+
|
|
|
+ echo "[+] Pushing image to registry..."
|
|
|
+ docker push "${full_tag}"
|
|
|
+
|
|
|
+ echo "[+] Build & push finished"
|
|
|
+ echo "[+] ================================"
|
|
|
+
|
|
|
+ restart_app
|
|
|
+}
|
|
|
+
|
|
|
+restart_app() {
|
|
|
+ echo "[+] Restart ${image_name}"
|
|
|
+ echo "[+] --------------------------------"
|
|
|
+
|
|
|
+ local remote=''
|
|
|
+ local cmd=''
|
|
|
+ local full_tag="${registry}/${image_name}:${version}-${env}"
|
|
|
+ local redis_host=''
|
|
|
+
|
|
|
+ local redis_password='redis@aitori!@#'
|
|
|
+ local redis_port='6379'
|
|
|
+ local redis_db='1'
|
|
|
+
|
|
|
+ case $env in
|
|
|
+ dev)
|
|
|
+ remote=$REMOTE_DEV
|
|
|
+ redis_host='10.146.0.2'
|
|
|
+ ;;
|
|
|
+ test)
|
|
|
+ remote=$REMOTE_TEST
|
|
|
+ redis_host='10.146.0.2'
|
|
|
+ ;;
|
|
|
+ pro)
|
|
|
+ remote=$REMOTE_PRO
|
|
|
+ redis_host='10.146.0.3'
|
|
|
+ ;;
|
|
|
+ esac
|
|
|
+
|
|
|
+ cmd="docker run -d \
|
|
|
+ --name ${image_name} \
|
|
|
+ --restart always \
|
|
|
+ -p 8080:8080 \
|
|
|
+ -m 2g \
|
|
|
+ -e AI_FLOW_REDIS_HOST=${redis_host} \
|
|
|
+ -e AI_FLOW_REDIS_PORT=${redis_port} \
|
|
|
+ -e AI_FLOW_REDIS_PASSWORD=${redis_password} \
|
|
|
+ -e AI_FLOW_REDIS_DB=${redis_db} \
|
|
|
+ -e AI_FLOW_STORE_BACKEND=redis \
|
|
|
+ -v /data/ai-flow/data:/app/data \
|
|
|
+ -v /data/ai-flow/resources:/app/resources \
|
|
|
+ --volume /etc/localtime:/etc/localtime \
|
|
|
+ ${full_tag}"
|
|
|
+
|
|
|
+ ssh "$remote" << EEOOFF
|
|
|
+docker rm -f ${image_name} 2>/dev/null || true
|
|
|
+docker pull ${full_tag}
|
|
|
+${cmd}
|
|
|
+exit
|
|
|
+EEOOFF
|
|
|
+
|
|
|
+ echo "[+] Restart ${image_name} finished"
|
|
|
+ echo "[+] --------------------------------"
|
|
|
+}
|
|
|
+
|
|
|
+while getopts "e:v:h" arg; do
|
|
|
+ case $arg in
|
|
|
+ e)
|
|
|
+ env=$OPTARG
|
|
|
+ echo "[+] Build env: $env"
|
|
|
+ ;;
|
|
|
+ v)
|
|
|
+ version=$OPTARG
|
|
|
+ echo "[+] Build version: $version"
|
|
|
+ ;;
|
|
|
+ h)
|
|
|
+ usage
|
|
|
+ exit 0
|
|
|
+ ;;
|
|
|
+ esac
|
|
|
+done
|
|
|
+
|
|
|
+login
|
|
|
+build
|