----添加部署脚本和文档
This commit is contained in:
199
宝策/docker_seata.sh
Normal file
199
宝策/docker_seata.sh
Normal file
@ -0,0 +1,199 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 定义变量
|
||||
CONTAINER_NAME="seata-server"
|
||||
IMAGE_NAME="docker.tanuki.vip/seata-server-kingbase:2.3.0" # Seata 镜像及版本
|
||||
CONFIG_DIR="/docker-data/seata/conf" # 配置文件目录
|
||||
SEATA_IP="10.10.2.102"
|
||||
PORT=8091 # Seata 服务端口
|
||||
NACOS_ADDR="10.10.2.102:8848"
|
||||
|
||||
# 显示帮助信息
|
||||
show_help() {
|
||||
echo "使用方法: $0 [操作类型]"
|
||||
echo "操作类型:"
|
||||
echo " deploy - 部署并启动Seata容器"
|
||||
echo " remove - 停止并删除Seata容器及数据/配置目录"
|
||||
echo " logs - 查看Seata容器日志"
|
||||
echo " help - 显示帮助信息"
|
||||
}
|
||||
|
||||
# 部署功能
|
||||
deploy_seata() {
|
||||
|
||||
if [ ! -d "$CONFIG_DIR" ]; then
|
||||
echo "创建配置目录: $CONFIG_DIR"
|
||||
mkdir -p "$CONFIG_DIR"
|
||||
chmod 777 "$CONFIG_DIR"
|
||||
fi
|
||||
|
||||
# 生成单机模式配置文件(若不存在)
|
||||
if [ ! -f "$CONFIG_DIR/application.yml" ]; then
|
||||
echo "生成配置文件: $CONFIG_DIR/application.yml"
|
||||
cat > "$CONFIG_DIR/application.yml" << EOF
|
||||
server:
|
||||
port: 7091
|
||||
|
||||
spring:
|
||||
application:
|
||||
name: seata-server
|
||||
|
||||
logging:
|
||||
config: classpath:logback-spring.xml
|
||||
file:
|
||||
path: ${log.home:${user.home}/logs/seata}
|
||||
extend:
|
||||
logstash-appender:
|
||||
destination: 127.0.0.1:4560
|
||||
kafka-appender:
|
||||
bootstrap-servers: 127.0.0.1:9092
|
||||
topic: logback_to_logstash
|
||||
|
||||
console:
|
||||
user:
|
||||
username: seata
|
||||
password: seata
|
||||
seata:
|
||||
config:
|
||||
type: nacos
|
||||
nacos:
|
||||
server-addr: 10.10.2.102:8848 # Nacos 服务器地址
|
||||
namespace: "ITC-MS" # Nacos 命名空间 ID
|
||||
group: DNE # Nacos 配置组
|
||||
username: nacos # Nacos 用户名
|
||||
password: Lng@123 # Nacos 密码
|
||||
data-id: seataServer-sv.properties
|
||||
registry:
|
||||
type: nacos
|
||||
nacos:
|
||||
application: seata-server # Seata 服务在 Nacos 中的名称
|
||||
server-addr: 10.10.2.102:8848 # Nacos 服务器地址
|
||||
namespace: "DNE-MS-SIT" # Nacos 命名空间 ID
|
||||
group: DNE
|
||||
cluster: default # Seata 集群名称
|
||||
username: nacos # Nacos 用户名
|
||||
password: Lng@123 # Nacos 密码
|
||||
store:
|
||||
mode: db # 存储模式,支持 file/db/redis
|
||||
db:
|
||||
driver-class-name: com.kingbase8.Driver
|
||||
url: jdbc:kingbase8://10.10.2.102:54321/itc?currentSchema=seata_sit
|
||||
user: itc_dne
|
||||
password: itc_dne
|
||||
# server:
|
||||
# service-port: 8091 #If not configured, the default is '${server.port} + 1000'
|
||||
security:
|
||||
secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
|
||||
tokenValidityInMilliseconds: 1800000
|
||||
csrf-ignore-urls: /metadata/v1/**
|
||||
ignore:
|
||||
urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.jpeg,/**/*.ico,/api/v1/auth/login,/version.json,/health,/error,/vgroup/v1/**
|
||||
EOF
|
||||
fi
|
||||
|
||||
# 检查容器是否已存在,存在则停止并删除
|
||||
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||
echo "停止并删除现有容器: $CONTAINER_NAME"
|
||||
docker stop $CONTAINER_NAME
|
||||
docker rm $CONTAINER_NAME
|
||||
fi
|
||||
|
||||
# 启动 Seata 容器
|
||||
#docker run --name seata-server -p 8091:8091 -p 7091:7091 -e SEATA_IP=10.4.126.114 -v "E:/docker-data/seata-server/config:/seata-server/resources" seata-server-arm64:2.3.0-kingbase8
|
||||
echo "启动 Seata 容器..."
|
||||
docker run -d \
|
||||
--name $CONTAINER_NAME \
|
||||
--restart always \
|
||||
-p $PORT:8091 \
|
||||
-p 7091:7091 \
|
||||
-e SEATA_IP=$SEATA_IP \
|
||||
-v $CONFIG_DIR/application.yml:/seata-server/resources/application.yml \
|
||||
$IMAGE_NAME
|
||||
|
||||
# 检查容器启动状态
|
||||
if [ "$(docker ps -aq -f name=$CONTAINER_NAME -f status=running)" ]; then
|
||||
echo "Seata 容器启动成功!"
|
||||
echo "容器名称: $CONTAINER_NAME"
|
||||
echo "开放端口: 7091 8091"
|
||||
echo "服务访问地址: http://localhost:$PORT"
|
||||
else
|
||||
echo "Seata 容器启动失败,请检查日志获取详细信息。"
|
||||
docker logs $CONTAINER_NAME
|
||||
fi
|
||||
}
|
||||
|
||||
# 删除功能
|
||||
remove_seata() {
|
||||
# 检查容器是否存在
|
||||
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||
echo "停止容器: $CONTAINER_NAME"
|
||||
docker stop $CONTAINER_NAME
|
||||
|
||||
echo "删除容器: $CONTAINER_NAME"
|
||||
docker rm $CONTAINER_NAME
|
||||
else
|
||||
echo "容器 $CONTAINER_NAME 不存在"
|
||||
fi
|
||||
|
||||
# 检查数据目录是否存在
|
||||
if [ -d "$DATA_DIR" ]; then
|
||||
read -p "是否删除数据目录 $DATA_DIR? (y/n) " confirm
|
||||
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
|
||||
echo "删除数据目录: $DATA_DIR"
|
||||
rm -rf "$DATA_DIR"
|
||||
else
|
||||
echo "保留数据目录: $DATA_DIR"
|
||||
fi
|
||||
else
|
||||
echo "数据目录 $DATA_DIR 不存在"
|
||||
fi
|
||||
|
||||
# 检查配置目录是否存在
|
||||
if [ -d "$CONFIG_DIR" ]; then
|
||||
read -p "是否删除配置目录 $CONFIG_DIR? (y/n) " confirm
|
||||
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
|
||||
echo "删除配置目录: $CONFIG_DIR"
|
||||
rm -rf "$CONFIG_DIR"
|
||||
else
|
||||
echo "保留配置目录: $CONFIG_DIR"
|
||||
fi
|
||||
else
|
||||
echo "配置目录 $CONFIG_DIR 不存在"
|
||||
fi
|
||||
}
|
||||
|
||||
# 日志功能
|
||||
show_logs() {
|
||||
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||
echo "查看 $CONTAINER_NAME 容器日志 (按 Ctrl+C 退出)..."
|
||||
docker logs -f --tail 100 $CONTAINER_NAME
|
||||
else
|
||||
echo "容器 $CONTAINER_NAME 不存在"
|
||||
fi
|
||||
}
|
||||
|
||||
# 主逻辑
|
||||
if [ $# -ne 1 ]; then
|
||||
show_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
deploy)
|
||||
deploy_seata
|
||||
;;
|
||||
remove)
|
||||
remove_seata
|
||||
;;
|
||||
logs)
|
||||
show_logs
|
||||
;;
|
||||
help)
|
||||
show_help
|
||||
;;
|
||||
*)
|
||||
echo "无效的操作类型: $1"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user