157 lines
3.8 KiB
Bash
157 lines
3.8 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
|
|||
|
|
# Kingbase容器名称
|
|||
|
|
CONTAINER_NAME="kingbase8"
|
|||
|
|
# Kingbase镜像版本
|
|||
|
|
KINGBASE_VERSION="v1"
|
|||
|
|
# 镜像名称
|
|||
|
|
IMAGE_NAME="127.0.0.1:5000/kingbase8:${KINGBASE_VERSION}"
|
|||
|
|
# 映射端口(主机:容器)
|
|||
|
|
PORT="54321:54321"
|
|||
|
|
# 网络配置
|
|||
|
|
NETWORK="scm-net"
|
|||
|
|
# 容器IP
|
|||
|
|
CONTAINER_IP="172.20.0.4"
|
|||
|
|
# 环境变量配置
|
|||
|
|
TZ="Asia/Shanghai"
|
|||
|
|
NEED_START="yes"
|
|||
|
|
DB_USER="itc_dne"
|
|||
|
|
DB_PASSWORD="itc_dne"
|
|||
|
|
DB_MODE="oracle"
|
|||
|
|
# 数据存储路径
|
|||
|
|
DATA_PATH="/docker-data/kingbase/data"
|
|||
|
|
|
|||
|
|
# 创建目录并设置权限函数
|
|||
|
|
create_dirs() {
|
|||
|
|
# 创建数据目录并设置权限
|
|||
|
|
if [ ! -d "$DATA_PATH" ]; then
|
|||
|
|
mkdir -p "$DATA_PATH"
|
|||
|
|
echo "创建数据目录: $DATA_PATH"
|
|||
|
|
chmod -R 777 "$DATA_PATH"
|
|||
|
|
echo "设置数据目录权限: $DATA_PATH"
|
|||
|
|
fi
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 部署Kingbase
|
|||
|
|
deploy() {
|
|||
|
|
if [ "$(docker ps -q -f name=$CONTAINER_NAME)" ]; then
|
|||
|
|
echo "Kingbase容器 $CONTAINER_NAME 已存在并运行中"
|
|||
|
|
return 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
|||
|
|
echo "发现已停止的Kingbase容器,正在启动..."
|
|||
|
|
docker start $CONTAINER_NAME
|
|||
|
|
return 0
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "开始部署Kingbase容器..."
|
|||
|
|
create_dirs
|
|||
|
|
|
|||
|
|
docker run -d --privileged --restart always \
|
|||
|
|
--net=$NETWORK --ip=$CONTAINER_IP \
|
|||
|
|
-p $PORT \
|
|||
|
|
--name $CONTAINER_NAME \
|
|||
|
|
-e TZ=$TZ -e NEED_START=$NEED_START \
|
|||
|
|
-e DB_USER=$DB_USER -e DB_PASSWORD=$DB_PASSWORD -e DB_MODE=$DB_MODE \
|
|||
|
|
-v $DATA_PATH:/home/kingbase/userdata/data \
|
|||
|
|
$IMAGE_NAME
|
|||
|
|
|
|||
|
|
if [ $? -eq 0 ]; then
|
|||
|
|
echo "Kingbase容器部署成功!"
|
|||
|
|
echo "容器名称: $CONTAINER_NAME"
|
|||
|
|
echo "映射端口: $PORT"
|
|||
|
|
else
|
|||
|
|
echo "Kingbase容器部署失败!"
|
|||
|
|
fi
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 查看日志
|
|||
|
|
logs() {
|
|||
|
|
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
|||
|
|
echo "Kingbase容器 $CONTAINER_NAME 不存在"
|
|||
|
|
return 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "查看Kingbase容器日志 (按Ctrl+C退出)..."
|
|||
|
|
docker logs -f --tail 200 $CONTAINER_NAME
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 重启容器
|
|||
|
|
restart() {
|
|||
|
|
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
|||
|
|
echo "Kingbase容器 $CONTAINER_NAME 不存在"
|
|||
|
|
return 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "正在重启Kingbase容器..."
|
|||
|
|
docker restart $CONTAINER_NAME
|
|||
|
|
|
|||
|
|
if [ $? -eq 0 ]; then
|
|||
|
|
echo "Kingbase容器重启成功!"
|
|||
|
|
else
|
|||
|
|
echo "Kingbase容器重启失败!"
|
|||
|
|
fi
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 删除容器
|
|||
|
|
remove() {
|
|||
|
|
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
|||
|
|
echo "Kingbase容器 $CONTAINER_NAME 不存在"
|
|||
|
|
return 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "警告:此操作将删除Kingbase容器,但数据目录会保留"
|
|||
|
|
read -p "确定要删除吗?(y/n) " confirm
|
|||
|
|
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
|
|||
|
|
echo "取消删除操作"
|
|||
|
|
return 0
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "正在停止并删除Kingbase容器..."
|
|||
|
|
docker stop $CONTAINER_NAME
|
|||
|
|
docker rm $CONTAINER_NAME
|
|||
|
|
|
|||
|
|
if [ $? -eq 0 ]; then
|
|||
|
|
echo "Kingbase容器删除成功!"
|
|||
|
|
echo "数据保留在: $DATA_PATH"
|
|||
|
|
else
|
|||
|
|
echo "Kingbase容器删除失败!"
|
|||
|
|
fi
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 显示帮助
|
|||
|
|
show_help() {
|
|||
|
|
echo "Kingbase容器管理脚本"
|
|||
|
|
echo "用法: $0 [命令]"
|
|||
|
|
echo "命令列表:"
|
|||
|
|
echo " deploy - 部署并启动Kingbase容器"
|
|||
|
|
echo " logs - 查看Kingbase容器日志"
|
|||
|
|
echo " restart - 重启Kingbase容器"
|
|||
|
|
echo " remove - 删除Kingbase容器(保留数据)"
|
|||
|
|
echo " help - 显示帮助信息"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 主逻辑
|
|||
|
|
case "$1" in
|
|||
|
|
deploy)
|
|||
|
|
deploy
|
|||
|
|
;;
|
|||
|
|
logs)
|
|||
|
|
logs
|
|||
|
|
;;
|
|||
|
|
restart)
|
|||
|
|
restart
|
|||
|
|
;;
|
|||
|
|
remove)
|
|||
|
|
remove
|
|||
|
|
;;
|
|||
|
|
help)
|
|||
|
|
show_help
|
|||
|
|
;;
|
|||
|
|
*)
|
|||
|
|
echo "未知命令: $1"
|
|||
|
|
show_help
|
|||
|
|
exit 1
|
|||
|
|
;;
|
|||
|
|
esac
|