139 lines
3.8 KiB
Bash
139 lines
3.8 KiB
Bash
#!/bin/bash
|
|
|
|
# 定义变量
|
|
CONTAINER_NAME="itc-ms-facade-service"
|
|
IMAGE_NAME="127.0.0.1:5000/itc-ms-facade-service"
|
|
IMAGE_VERSION="2025-09-29-0805"
|
|
IMAGE_FULL="$IMAGE_NAME:$IMAGE_VERSION"
|
|
PORT=9507 # 服务暴露端口
|
|
DEBUG_PORT=9508 # 服务暴露端口
|
|
DISCOVERY_IP="10.10.2.102"
|
|
SKYWALKING_SERVER="10.10.2.102:11800"
|
|
|
|
NACOS_ADDR="10.10.2.102:8848"
|
|
NACOS_USER="nacos"
|
|
NACOS_PWD="Lng@123"
|
|
ENV_APP_PRO_FILE="local"
|
|
file="$CONTAINER_NAME-version.txt"
|
|
|
|
# 检查文件是否存在(假设 $file 是目标文件变量,已在别处定义)
|
|
if [ ! -f "$file" ]; then
|
|
echo "文件 $file 不存在"
|
|
touch "$file" # 变量加引号,处理含空格的文件名
|
|
echo "$IMAGE_FULL" >> "$file"
|
|
echo "记录版本【$IMAGE_FULL】到 $file"
|
|
else
|
|
# 检查参数数量(建议移到脚本开头统一检查)
|
|
if [ $# -eq 2 ]; then
|
|
IMAGE_FULL="$IMAGE_NAME:$2"
|
|
echo "$IMAGE_FULL" >> "$file"
|
|
echo "记录版本【$IMAGE_FULL】到 $file"
|
|
else
|
|
# 修正赋值语法:等号两侧无空格
|
|
last_version=$(tail -n 1 "$file")
|
|
IMAGE_FULL="$last_version"
|
|
# 建议添加对 $IMAGE_FULL 的后续处理(如使用该变量)
|
|
fi
|
|
fi
|
|
|
|
# 显示帮助信息
|
|
show_help() {
|
|
echo "使用方法: $0 [操作类型]"
|
|
echo "操作类型:"
|
|
echo " deploy - 部署并启动服务容器"
|
|
echo " remove - 停止并删除容器及数据/日志目录"
|
|
echo " logs - 查看容器日志"
|
|
echo " help - 显示帮助信息"
|
|
}
|
|
|
|
|
|
|
|
# 部署服务
|
|
deploy_service() {
|
|
echo "部署镜像【$IMAGE_FULL】"
|
|
# 检查容器是否已存在,存在则停止并删除
|
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
|
echo "停止并删除现有容器: $CONTAINER_NAME"
|
|
docker stop $CONTAINER_NAME >/dev/null
|
|
docker rm $CONTAINER_NAME >/dev/null
|
|
fi
|
|
|
|
# 启动服务容器
|
|
echo "启动服务容器..."
|
|
|
|
docker run -d --privileged --restart always --name $CONTAINER_NAME \
|
|
-p $PORT:8097 -p $DEBUG_PORT:5005 \
|
|
-e SKYWALKING_SERVER=$SKYWALKING_SERVER \
|
|
-e ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE \
|
|
-e SPRING_CLOUD_CLIENT_IP_ADDRESS=$DISCOVERY_IP \
|
|
-e SPRING_CLOUD_NACOS_DISCOVERY_IP=$DISCOVERY_IP \
|
|
-e SPRING_CLOUD_NACOS_DISCOVERY_PORT=$PORT \
|
|
-e SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR=$NACOS_ADDR \
|
|
-e SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR=$NACOS_ADDR \
|
|
-e SPRING_CLOUD_NACOS_CONFIG_USERNAME=$NACOS_USER \
|
|
-e SPRING_CLOUD_NACOS_CONFIG_PASSWORD=$NACOS_PWD \
|
|
$IMAGE_FULL
|
|
|
|
# 检查启动状态
|
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME -f status=running)" ]; then
|
|
echo "服务启动成功!"
|
|
echo "容器名称: $CONTAINER_NAME"
|
|
echo "访问地址: http://localhost:$PORT"
|
|
echo "环境变量: ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE"
|
|
else
|
|
echo "服务启动失败,日志如下:"
|
|
docker logs $CONTAINER_NAME
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# 删除服务
|
|
remove_service() {
|
|
# 检查容器是否存在
|
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
|
echo "停止容器: $CONTAINER_NAME"
|
|
docker stop $CONTAINER_NAME >/dev/null
|
|
|
|
echo "删除容器: $CONTAINER_NAME"
|
|
docker rm $CONTAINER_NAME >/dev/null
|
|
else
|
|
echo "容器 $CONTAINER_NAME 不存在"
|
|
fi
|
|
}
|
|
|
|
# 查看日志
|
|
show_logs() {
|
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
|
echo "查看 $CONTAINER_NAME 容器日志 (按 Ctrl+C 退出)..."
|
|
docker logs -f $CONTAINER_NAME
|
|
else
|
|
echo "容器 $CONTAINER_NAME 不存在"
|
|
fi
|
|
}
|
|
|
|
# 主逻辑
|
|
if [ $# -lt 1 ]; then
|
|
show_help
|
|
exit 1
|
|
fi
|
|
|
|
case "$1" in
|
|
deploy)
|
|
deploy_service
|
|
;;
|
|
remove)
|
|
remove_service
|
|
;;
|
|
logs)
|
|
show_logs
|
|
;;
|
|
help)
|
|
show_help
|
|
;;
|
|
*)
|
|
echo "无效的操作类型: $1"
|
|
show_help
|
|
exit 1
|
|
;;
|
|
esac
|