Files
geg-gas-pcitc/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/docker-user.sh
2025-10-10 09:20:48 +08:00

127 lines
3.4 KiB
Bash

#!/bin/bash
# 定义变量
CONTAINER_NAME="itc-ms-user"
IMAGE_NAME="pcitc/itc-ms-user"
IMAGE_VERSION="2025-08-04-0954"
IMAGE_FULL="$IMAGE_NAME:$IMAGE_VERSION"
PORT=8092 # 服务暴露端口
CONTAINER_PORT=8092 # 服务暴露端口
TZ="Asia/Shanghai" # 时区设置
# 环境变量配置
ENV_APP_PRO_FILE="test"
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:$CONTAINER_PORT \
-e ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE \
$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