----添加部署脚本和文档
This commit is contained in:
0
docker-builds/powerjob/Dockerfile
Normal file
0
docker-builds/powerjob/Dockerfile
Normal file
BIN
docker-builds/powerjob/kingbase-8.6.0.jar
Normal file
BIN
docker-builds/powerjob/kingbase-8.6.0.jar
Normal file
Binary file not shown.
BIN
java开发手册.docx
Normal file
BIN
java开发手册.docx
Normal file
Binary file not shown.
BIN
~$va开放手册.docx
Normal file
BIN
~$va开放手册.docx
Normal file
Binary file not shown.
222
宝策/docker_es.sh
Normal file
222
宝策/docker_es.sh
Normal file
@ -0,0 +1,222 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# 定义变量
|
||||||
|
CONTAINER_NAME="elasticsearch"
|
||||||
|
IMAGE_NAME="elasticsearch:7.17.28" # 镜像版本
|
||||||
|
DATA_DIR="/docker-data/elasticsearch/data" # 数据目录
|
||||||
|
CONFIG_DIR="/docker-data/elasticsearch/config" # 配置目录
|
||||||
|
LOGS_DIR="/docker-data/elasticsearch/logs" # 日志目录
|
||||||
|
HTTP_PORT=9200 # HTTP端口
|
||||||
|
TRANSPORT_PORT=9300 # 内部通信端口
|
||||||
|
CLUSTER_NAME="es-single-cluster" # 集群名称
|
||||||
|
NODE_NAME="single-node" # 节点名称
|
||||||
|
ES_JAVA_OPTS="-Xms1g -Xmx1g" # JVM内存(根据主机内存调整)
|
||||||
|
|
||||||
|
# 显示帮助信息
|
||||||
|
show_help() {
|
||||||
|
echo "使用方法: $0 [操作类型]"
|
||||||
|
echo "操作类型:"
|
||||||
|
echo " deploy - 部署并启动单机模式Elasticsearch"
|
||||||
|
echo " remove - 停止并删除容器及数据目录"
|
||||||
|
echo " logs - 查看容器日志"
|
||||||
|
echo " status - 查看容器状态"
|
||||||
|
echo " help - 显示帮助信息"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 准备环境(创建目录和配置文件)
|
||||||
|
prepare_env() {
|
||||||
|
# 创建数据、配置、日志目录并授权
|
||||||
|
for dir in "$DATA_DIR" "$CONFIG_DIR" "$LOGS_DIR"; do
|
||||||
|
if [ ! -d "$dir" ]; then
|
||||||
|
echo "创建目录: $dir"
|
||||||
|
mkdir -p "$dir"
|
||||||
|
fi
|
||||||
|
chown -R 1000:1000 "$dir" # 匹配容器内用户UID/GID
|
||||||
|
chmod 755 "$dir"
|
||||||
|
done
|
||||||
|
|
||||||
|
# 生成单机模式配置文件(若不存在)
|
||||||
|
if [ ! -f "$CONFIG_DIR/elasticsearch.yml" ]; then
|
||||||
|
echo "生成单机模式配置文件: $CONFIG_DIR/elasticsearch.yml"
|
||||||
|
cat > "$CONFIG_DIR/elasticsearch.yml" << EOF
|
||||||
|
cluster.name: es-single-cluster
|
||||||
|
node.name: single-node
|
||||||
|
network.host: 0.0.0.0
|
||||||
|
http.port: 9200
|
||||||
|
transport.port: 9300
|
||||||
|
discovery.type: single-node # 单机模式核心配置(必须保留)
|
||||||
|
# 以下行必须删除或注释掉(与single-node冲突)
|
||||||
|
# cluster.initial_master_nodes: ["single-node"]
|
||||||
|
xpack.security.enabled: false
|
||||||
|
http.cors.enabled: true
|
||||||
|
http.cors.allow-origin: "*"
|
||||||
|
bootstrap.memory_lock: true
|
||||||
|
ingest.geoip.downloader.enabled: false
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 配置JVM参数(若不存在)
|
||||||
|
if [ ! -f "$CONFIG_DIR/jvm.options" ]; then
|
||||||
|
echo "生成JVM配置文件: $CONFIG_DIR/jvm.options"
|
||||||
|
# 修正后代码(拆分参数为两行)
|
||||||
|
cat > "$CONFIG_DIR/jvm.options" << EOF
|
||||||
|
-Xms1g
|
||||||
|
-Xmx1g
|
||||||
|
# 保留其他默认配置(如下)
|
||||||
|
-XX:+UseG1GC
|
||||||
|
-XX:MaxGCPauseMillis=50
|
||||||
|
-XX:+HeapDumpOnOutOfMemoryError
|
||||||
|
8-13:-XX:+UseConcMarkSweepGC
|
||||||
|
8-13:-XX:CMSInitiatingOccupancyFraction=75
|
||||||
|
8-13:-XX:+UseCMSInitiatingOccupancyOnly
|
||||||
|
14-:-XX:+UseG1GC
|
||||||
|
-XX:+HeapDumpOnOutOfMemoryError
|
||||||
|
9-:-XX:+ExitOnOutOfMemoryError
|
||||||
|
-XX:HeapDumpPath=data
|
||||||
|
-XX:ErrorFile=logs/hs_err_pid%p.log
|
||||||
|
8:-XX:+PrintGCDetails
|
||||||
|
8:-XX:+PrintGCDateStamps
|
||||||
|
8:-XX:+PrintTenuringDistribution
|
||||||
|
8:-XX:+PrintGCApplicationStoppedTime
|
||||||
|
8:-Xloggc:logs/gc.log
|
||||||
|
8:-XX:+UseGCLogFileRotation
|
||||||
|
8:-XX:NumberOfGCLogFiles=32
|
||||||
|
8:-XX:GCLogFileSize=64m
|
||||||
|
# JDK 9+ GC logging
|
||||||
|
9-:-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 检查系统配置(解决vm.max_map_count问题)
|
||||||
|
check_sys_config() {
|
||||||
|
current_map_count=$(sysctl -n vm.max_map_count)
|
||||||
|
if [ $current_map_count -lt 262144 ]; then
|
||||||
|
echo "检测到vm.max_map_count值不足,需要调整..."
|
||||||
|
if [ "$(id -u)" -ne 0 ]; then
|
||||||
|
echo "请使用sudo权限运行脚本,或手动执行:"
|
||||||
|
echo "sudo sysctl -w vm.max_map_count=262144"
|
||||||
|
echo "并在/etc/sysctl.conf中添加:vm.max_map_count=262144"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# 临时调整
|
||||||
|
sysctl -w vm.max_map_count=262144
|
||||||
|
# 永久生效
|
||||||
|
if ! grep -q "vm.max_map_count=262144" /etc/sysctl.conf; then
|
||||||
|
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 部署启动
|
||||||
|
deploy_es() {
|
||||||
|
check_sys_config # 先检查系统配置
|
||||||
|
prepare_env # 准备目录和配置
|
||||||
|
|
||||||
|
# 停止并删除现有容器
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "停止并删除现有容器: $CONTAINER_NAME"
|
||||||
|
docker stop $CONTAINER_NAME
|
||||||
|
docker rm $CONTAINER_NAME
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 启动单机模式容器
|
||||||
|
echo "启动Elasticsearch单机模式..."
|
||||||
|
docker run -d --privileged \
|
||||||
|
--name $CONTAINER_NAME \
|
||||||
|
--restart always \
|
||||||
|
--ulimit nofile=65536:65536 \
|
||||||
|
--ulimit nproc=4096:4096 \
|
||||||
|
--ulimit memlock=-1:-1 \
|
||||||
|
-p $HTTP_PORT:9200 \
|
||||||
|
-p $TRANSPORT_PORT:9300 \
|
||||||
|
-v $DATA_DIR:/usr/share/elasticsearch/data \
|
||||||
|
-v $CONFIG_DIR/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
|
||||||
|
-v $LOGS_DIR:/usr/share/elasticsearch/logs \
|
||||||
|
-e TZ=Asia/Shanghai \
|
||||||
|
$IMAGE_NAME
|
||||||
|
|
||||||
|
# 检查启动状态
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME -f status=running)" ]; then
|
||||||
|
echo "Elasticsearch单机模式启动成功!"
|
||||||
|
echo "访问地址: http://localhost:$HTTP_PORT"
|
||||||
|
echo "集群名称: $CLUSTER_NAME"
|
||||||
|
echo "JVM配置: $ES_JAVA_OPTS"
|
||||||
|
else
|
||||||
|
echo "启动失败,请查看日志: ./$0 logs"
|
||||||
|
docker logs $CONTAINER_NAME
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 移除容器和数据
|
||||||
|
remove_es() {
|
||||||
|
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
|
||||||
|
|
||||||
|
# 询问是否删除数据目录
|
||||||
|
for dir in "$DATA_DIR" "$CONFIG_DIR" "$LOGS_DIR"; do
|
||||||
|
if [ -d "$dir" ]; then
|
||||||
|
read -p "是否删除目录 $dir? (y/n) " confirm
|
||||||
|
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
|
||||||
|
echo "删除目录: $dir"
|
||||||
|
rm -rf "$dir"
|
||||||
|
else
|
||||||
|
echo "保留目录: $dir"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# 查看日志
|
||||||
|
show_logs() {
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "查看Elasticsearch日志(按Ctrl+C退出)..."
|
||||||
|
docker logs -f $CONTAINER_NAME
|
||||||
|
else
|
||||||
|
echo "容器 $CONTAINER_NAME 不存在"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 查看状态
|
||||||
|
show_status() {
|
||||||
|
echo "容器状态:"
|
||||||
|
docker ps -f name=$CONTAINER_NAME --format "表格:{{.Names}} {{.Status}} {{.Ports}}"
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME -f status=running)" ]; then
|
||||||
|
echo "服务健康检查:"
|
||||||
|
curl -s "http://localhost:$HTTP_PORT/_cluster/health" | jq .
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主逻辑
|
||||||
|
if [ $# -ne 1 ]; then
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
deploy)
|
||||||
|
deploy_es
|
||||||
|
;;
|
||||||
|
remove)
|
||||||
|
remove_es
|
||||||
|
;;
|
||||||
|
logs)
|
||||||
|
show_logs
|
||||||
|
;;
|
||||||
|
status)
|
||||||
|
show_status
|
||||||
|
;;
|
||||||
|
help)
|
||||||
|
show_help
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "无效操作: $1"
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
96
宝策/docker_install.sh
Normal file
96
宝策/docker_install.sh
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 定义颜色变量,用于输出提示信息
|
||||||
|
GREEN="\033[32m"
|
||||||
|
RED="\033[31m"
|
||||||
|
NC="\033[0m" # 重置颜色
|
||||||
|
|
||||||
|
# 1. 解压 docker 压缩包
|
||||||
|
echo -e "${GREEN}开始解压 docker-28.4.0.tgz...${NC}"
|
||||||
|
if tar -xf docker-28.4.0.tgz; then
|
||||||
|
echo -e "${GREEN}压缩包解压成功${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${RED}压缩包解压失败,请检查文件是否存在或权限是否足够${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. 移动 docker 二进制文件到 /usr/bin
|
||||||
|
echo -e "${GREEN}开始移动 docker 文件到 /usr/bin...${NC}"
|
||||||
|
if mv docker/* /usr/bin/; then
|
||||||
|
echo -e "${GREEN}文件移动成功${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${RED}文件移动失败,请检查 docker 目录是否存在或权限是否足够${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3. 创建 docker.service 服务文件
|
||||||
|
echo -e "${GREEN}开始创建 docker 服务文件...${NC}"
|
||||||
|
SERVICE_FILE="/usr/lib/systemd/system/docker.service"
|
||||||
|
# 使用 cat 重定向写入内容,避免使用 vi 交互操作
|
||||||
|
cat > "$SERVICE_FILE" << 'EOF'
|
||||||
|
[Unit]
|
||||||
|
Description=Docker Application Container Engine
|
||||||
|
Documentation=https://docs.docker.com
|
||||||
|
After=network-online.target firewalld.service
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=notify
|
||||||
|
#ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1
|
||||||
|
ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1:5000 --insecure-registry=docker.tanuki.vip
|
||||||
|
ExecReload=/bin/kill -s HUP $MAINPID
|
||||||
|
LimitNOFILE=infinity
|
||||||
|
LimitNPROC=infinity
|
||||||
|
LimitCORE=infinity
|
||||||
|
#TasksMax=infinity
|
||||||
|
TimeoutStartSec=0
|
||||||
|
Delegate=yes
|
||||||
|
KillMode=process
|
||||||
|
Restart=on-failure
|
||||||
|
StartLimitBurst=3
|
||||||
|
StartLimitInterval=60s
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 检查服务文件是否创建成功
|
||||||
|
if [ -f "$SERVICE_FILE" ]; then
|
||||||
|
echo -e "${GREEN}docker.service 服务文件创建成功${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${RED}docker.service 服务文件创建失败${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 4. 重新加载 systemd 配置
|
||||||
|
echo -e "${GREEN}重新加载 systemd 配置...${NC}"
|
||||||
|
if systemctl daemon-reload; then
|
||||||
|
echo -e "${GREEN}systemd 配置重载成功${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${RED}systemd 配置重载失败${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 5. 启动 docker 服务
|
||||||
|
echo -e "${GREEN}启动 docker 服务...${NC}"
|
||||||
|
if systemctl start docker; then
|
||||||
|
echo -e "${GREEN}docker 服务启动成功${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${RED}docker 服务启动失败${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 6. 设置 docker 开机自启
|
||||||
|
echo -e "${GREEN}设置 docker 开机自启...${NC}"
|
||||||
|
if systemctl enable docker; then
|
||||||
|
echo -e "${GREEN}docker 开机自启设置成功${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${RED}docker 开机自启设置失败${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 7. 查看 docker 服务状态
|
||||||
|
echo -e "${GREEN}查看 docker 服务状态...${NC}"
|
||||||
|
systemctl status docker
|
||||||
|
|
||||||
|
echo -e "\n${GREEN}所有操作执行完成!${NC}"
|
||||||
157
宝策/docker_kingbase8.sh
Normal file
157
宝策/docker_kingbase8.sh
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
#!/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
|
||||||
142
宝策/docker_kkfileview.sh
Normal file
142
宝策/docker_kkfileview.sh
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# KKFileView容器名称
|
||||||
|
CONTAINER_NAME="kkfileview"
|
||||||
|
# KKFileView版本
|
||||||
|
KK_VERSION="4.4.0"
|
||||||
|
# 映射端口(主机:容器)
|
||||||
|
PORT="8012"
|
||||||
|
# 数据存储路径
|
||||||
|
CONF_PATH="/docker-data/kkfileview/conf"
|
||||||
|
|
||||||
|
# 镜像地址
|
||||||
|
IMAGE="docker.tanuki.vip/kkfileview:${KK_VERSION}"
|
||||||
|
|
||||||
|
# 创建目录并设置权限函数
|
||||||
|
create_dirs() {
|
||||||
|
# 创建数据目录并设置权限
|
||||||
|
if [ ! -d "$CONF_PATH" ]; then
|
||||||
|
mkdir -p "$CONF_PATH"
|
||||||
|
echo "创建数据目录: $CONF_PATH"
|
||||||
|
chmod -R 777 "$CONF_PATH"
|
||||||
|
echo "设置数据目录权限: $CONF_PATH"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 部署KKFileView
|
||||||
|
deploy() {
|
||||||
|
if [ "$(docker ps -q -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "KKFileView容器 $CONTAINER_NAME 已存在并运行中"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "发现已停止的KKFileView容器,正在启动..."
|
||||||
|
docker start $CONTAINER_NAME
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "开始部署KKFileView容器..."
|
||||||
|
create_dirs
|
||||||
|
docker run -d --restart always --name $CONTAINER_NAME\
|
||||||
|
-p $PORT:8012 \
|
||||||
|
-v $CONF_PATH/application.properties:/opt/kkFileView-4.4.0/config/application.properties \
|
||||||
|
$IMAGE
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "KKFileView容器部署成功!"
|
||||||
|
echo "容器名称: $CONTAINER_NAME"
|
||||||
|
echo "映射端口: $PORT"
|
||||||
|
else
|
||||||
|
echo "KKFileView容器部署失败!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 查看日志
|
||||||
|
logs() {
|
||||||
|
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "KKFileView容器 $CONTAINER_NAME 不存在"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "查看KKFileView容器日志 (按Ctrl+C退出)..."
|
||||||
|
docker logs -f --tail 200 $CONTAINER_NAME
|
||||||
|
}
|
||||||
|
|
||||||
|
# 重启容器
|
||||||
|
restart() {
|
||||||
|
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "KKFileView容器 $CONTAINER_NAME 不存在"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "正在重启KKFileView容器..."
|
||||||
|
docker restart $CONTAINER_NAME
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "KKFileView容器重启成功!"
|
||||||
|
else
|
||||||
|
echo "KKFileView容器重启失败!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 删除容器
|
||||||
|
remove() {
|
||||||
|
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "KKFileView容器 $CONTAINER_NAME 不存在"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "警告:此操作将删除KKFileView容器"
|
||||||
|
read -p "确定要删除吗?(y/n) " confirm
|
||||||
|
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
|
||||||
|
echo "取消删除操作"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "正在停止并删除KKFileView容器..."
|
||||||
|
docker stop $CONTAINER_NAME
|
||||||
|
docker rm $CONTAINER_NAME
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "KKFileView容器删除成功!"
|
||||||
|
else
|
||||||
|
echo "KKFileView容器删除失败!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 显示帮助
|
||||||
|
show_help() {
|
||||||
|
echo "KKFileView容器管理脚本"
|
||||||
|
echo "用法: $0 [命令]"
|
||||||
|
echo "命令列表:"
|
||||||
|
echo " deploy - 部署并启动KKFileView容器"
|
||||||
|
echo " logs - 查看KKFileView容器日志"
|
||||||
|
echo " restart - 重启KKFileView容器"
|
||||||
|
echo " remove - 删除KKFileView容器"
|
||||||
|
echo " help - 显示帮助信息"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主逻辑
|
||||||
|
case "$1" in
|
||||||
|
deploy)
|
||||||
|
deploy
|
||||||
|
;;
|
||||||
|
logs)
|
||||||
|
logs
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
restart
|
||||||
|
;;
|
||||||
|
remove)
|
||||||
|
remove
|
||||||
|
;;
|
||||||
|
help)
|
||||||
|
show_help
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "未知命令: $1"
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
159
宝策/docker_minio.sh
Normal file
159
宝策/docker_minio.sh
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# MinIO容器名称
|
||||||
|
CONTAINER_NAME="minio"
|
||||||
|
# MinIO镜像版本
|
||||||
|
MINIO_VERSION="RELEASE.2025-07-23T15-54-02Z"
|
||||||
|
# 映射端口(API:控制台)
|
||||||
|
PORT_API="9000"
|
||||||
|
PORT_CONSOLE="9001"
|
||||||
|
# 环境变量配置
|
||||||
|
MINIO_ROOT_USER="admin"
|
||||||
|
MINIO_ROOT_PASSWORD="Pcitc@123"
|
||||||
|
MINIO_CONSOLE_ACKNOWLEDGE_AGPL="yes"
|
||||||
|
# 网络配置
|
||||||
|
NETWORK="scm-net"
|
||||||
|
# 容器IP
|
||||||
|
CONTAINER_IP="172.20.0.3"
|
||||||
|
# 数据存储路径
|
||||||
|
DATA_PATH="/docker-data/minio/data"
|
||||||
|
|
||||||
|
# 创建目录并设置权限函数
|
||||||
|
create_dirs() {
|
||||||
|
# 创建数据目录并设置权限
|
||||||
|
if [ ! -d "$DATA_PATH" ]; then
|
||||||
|
mkdir -p "$DATA_PATH"
|
||||||
|
echo "创建数据目录: $DATA_PATH"
|
||||||
|
chmod -R 777 "$DATA_PATH"
|
||||||
|
echo "设置数据目录权限: $DATA_PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# 部署MinIO
|
||||||
|
deploy() {
|
||||||
|
if [ "$(docker ps -q -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "MinIO容器 $CONTAINER_NAME 已存在并运行中"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "发现已停止的MinIO容器,正在启动..."
|
||||||
|
docker start $CONTAINER_NAME
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "开始部署MinIO容器..."
|
||||||
|
create_dirs
|
||||||
|
|
||||||
|
docker run -d --restart always \
|
||||||
|
--net=$NETWORK --ip=$CONTAINER_IP \
|
||||||
|
-p $PORT_API:9000 \
|
||||||
|
-p $PORT_CONSOLE:9001 \
|
||||||
|
--name $CONTAINER_NAME \
|
||||||
|
-e "MINIO_ROOT_USER=$MINIO_ROOT_USER" \
|
||||||
|
-e "MINIO_ROOT_PASSWORD=$MINIO_ROOT_PASSWORD" \
|
||||||
|
-e "MINIO_CONSOLE_ACKNOWLEDGE-AGPL=yes" \
|
||||||
|
-v $DATA_PATH:/data \
|
||||||
|
minio/minio:$MINIO_VERSION server /data --console-address ":9001"
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "MinIO容器部署成功!"
|
||||||
|
echo "容器名称: $CONTAINER_NAME"
|
||||||
|
echo "API端口映射: $PORT_API"
|
||||||
|
echo "控制台端口映射: $PORT_CONSOLE"
|
||||||
|
else
|
||||||
|
echo "MinIO容器部署失败!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 查看日志
|
||||||
|
logs() {
|
||||||
|
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "MinIO容器 $CONTAINER_NAME 不存在"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "查看MinIO容器日志 (按Ctrl+C退出)..."
|
||||||
|
docker logs -f --tail 200 $CONTAINER_NAME
|
||||||
|
}
|
||||||
|
|
||||||
|
# 重启容器
|
||||||
|
restart() {
|
||||||
|
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "MinIO容器 $CONTAINER_NAME 不存在"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "正在重启MinIO容器..."
|
||||||
|
docker restart $CONTAINER_NAME
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "MinIO容器重启成功!"
|
||||||
|
else
|
||||||
|
echo "MinIO容器重启失败!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 删除容器
|
||||||
|
remove() {
|
||||||
|
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "MinIO容器 $CONTAINER_NAME 不存在"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "警告:此操作将删除MinIO容器,但数据目录会保留"
|
||||||
|
read -p "确定要删除吗?(y/n) " confirm
|
||||||
|
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
|
||||||
|
echo "取消删除操作"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "正在停止并删除MinIO容器..."
|
||||||
|
docker stop $CONTAINER_NAME
|
||||||
|
docker rm $CONTAINER_NAME
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "MinIO容器删除成功!"
|
||||||
|
echo "数据保留在: $DATA_PATH"
|
||||||
|
else
|
||||||
|
echo "MinIO容器删除失败!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 显示帮助
|
||||||
|
show_help() {
|
||||||
|
echo "MinIO容器管理脚本"
|
||||||
|
echo "用法: $0 [命令]"
|
||||||
|
echo "命令列表:"
|
||||||
|
echo " deploy - 部署并启动MinIO容器"
|
||||||
|
echo " logs - 查看MinIO容器日志"
|
||||||
|
echo " restart - 重启MinIO容器"
|
||||||
|
echo " remove - 删除MinIO容器(保留数据)"
|
||||||
|
echo " help - 显示帮助信息"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主逻辑
|
||||||
|
case "$1" in
|
||||||
|
deploy)
|
||||||
|
deploy
|
||||||
|
;;
|
||||||
|
logs)
|
||||||
|
logs
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
restart
|
||||||
|
;;
|
||||||
|
remove)
|
||||||
|
remove
|
||||||
|
;;
|
||||||
|
help)
|
||||||
|
show_help
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "未知命令: $1"
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
309
宝策/docker_nacos.sh
Normal file
309
宝策/docker_nacos.sh
Normal file
@ -0,0 +1,309 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# 脚本功能:不依赖docker-compose,使用docker命令管理nacos服务
|
||||||
|
|
||||||
|
# 定义变量
|
||||||
|
IMAGE="docker.tanuki.vip/nacos-server-kingbase"
|
||||||
|
IMAGE_VERSION="2.3.0"
|
||||||
|
FULL_IMAGE="${IMAGE}:${IMAGE_VERSION}" # 合并镜像地址和版本
|
||||||
|
CONTAINER_NAME="nacos-server"
|
||||||
|
CONFIG_DIR="/docker-data/nacos/conf" # 配置文件目录
|
||||||
|
HOST_PORT="8848"
|
||||||
|
CONTAINER_PORT="8848"
|
||||||
|
|
||||||
|
# 环境变量(处理特殊字符,使用单引号包裹)
|
||||||
|
ENV_VARS=(
|
||||||
|
'MODE=standalone'
|
||||||
|
)
|
||||||
|
|
||||||
|
# 显示使用帮助
|
||||||
|
usage() {
|
||||||
|
echo "用法: $0 [命令]"
|
||||||
|
echo "命令列表:"
|
||||||
|
echo " deploy - 部署并启动服务(如果镜像不存在会拉取)"
|
||||||
|
echo " start - 启动服务(容器必须已存在)"
|
||||||
|
echo " stop - 停止服务"
|
||||||
|
echo " restart - 重启服务"
|
||||||
|
echo " status - 查看服务状态"
|
||||||
|
echo " logs - 查看服务日志"
|
||||||
|
echo " remove - 删除容器(停止状态下)"
|
||||||
|
echo " pull - 拉取最新镜像"
|
||||||
|
echo " help - 显示帮助信息"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# 检查docker是否安装
|
||||||
|
check_docker() {
|
||||||
|
if ! command -v docker &> /dev/null; then
|
||||||
|
echo "错误: 未安装docker,请先安装"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 检查容器是否存在
|
||||||
|
container_exists() {
|
||||||
|
docker inspect "$CONTAINER_NAME" &> /dev/null
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
# 检查容器是否运行
|
||||||
|
container_running() {
|
||||||
|
docker inspect -f '{{.State.Running}}' "$CONTAINER_NAME" 2>/dev/null | grep -q "true"
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
# 拉取镜像
|
||||||
|
pull_image() {
|
||||||
|
check_docker
|
||||||
|
echo "拉取镜像 $FULL_IMAGE ..."
|
||||||
|
if docker pull "$FULL_IMAGE"; then
|
||||||
|
echo "镜像拉取成功"
|
||||||
|
else
|
||||||
|
echo "错误: 镜像拉取失败"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 部署并启动服务(如果容器不存在则创建,已存在则启动)
|
||||||
|
deploy_service() {
|
||||||
|
check_docker
|
||||||
|
|
||||||
|
# 检查数据目录和配置目录是否存在,不存在则创建
|
||||||
|
|
||||||
|
if [ ! -d "$CONFIG_DIR" ]; then
|
||||||
|
echo "创建配置目录: $CONFIG_DIR"
|
||||||
|
mkdir -p "$CONFIG_DIR"
|
||||||
|
chmod 777 "$CONFIG_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 生成单机模式配置文件(若不存在)
|
||||||
|
if [ ! -f "$CONFIG_DIR/application.properties" ]; then
|
||||||
|
echo "生成配置文件: $CONFIG_DIR/application.properties"
|
||||||
|
cat > "$CONFIG_DIR/application.properties" << EOF
|
||||||
|
#server.port=8848
|
||||||
|
spring.datasource.platform=kingbase8
|
||||||
|
db.type=kingbase8
|
||||||
|
db.driverClassName=com.kingbase8.Driver
|
||||||
|
db.pool.config.driverClassName=com.kingbase8.Driver
|
||||||
|
|
||||||
|
db.num=1
|
||||||
|
db.url.0=jdbc:kingbase8://10.10.2.102:54321/itc?currentSchema=nacos_sit&socketTimeout=600000&queryTimeout=600
|
||||||
|
db.user=itc_dne
|
||||||
|
db.password=itc_dne
|
||||||
|
|
||||||
|
# 已配置的驱动(保留)
|
||||||
|
spring.datasource.hikari.auto-commit=false
|
||||||
|
# 增加事务超时(全局设置)
|
||||||
|
spring.transaction.default-timeout=6000
|
||||||
|
# 连接池最大连接数
|
||||||
|
spring.datasource.hikari.maximum-pool-size=20
|
||||||
|
# 连接池最小空闲连接数
|
||||||
|
spring.datasource.hikari.minimum-idle=10
|
||||||
|
# 连接最大存活时间
|
||||||
|
spring.datasource.hikari.max-lifetime=1800000
|
||||||
|
# 验证连接是否有效
|
||||||
|
spring.datasource.hikari.connection-test-query=SELECT 1
|
||||||
|
# 等待连接池分配连接的最大时长
|
||||||
|
spring.datasource.hikari.connection-timeout=60000
|
||||||
|
# 设置事务隔离级别为READ_COMMITTED
|
||||||
|
spring.datasource.hikari.transaction-isolation=TRANSACTION_READ_COMMITTED
|
||||||
|
# 传递 JDBC 驱动属性(设置 queryTimeout)
|
||||||
|
spring.datasource.hikari.connection-properties=queryTimeout=6000;socketTimeout=600000
|
||||||
|
# 验证连接的查询超时(单独设置,单位:秒)
|
||||||
|
spring.datasource.hikari.validation-query-timeout=3000
|
||||||
|
|
||||||
|
|
||||||
|
# 开启认证功能
|
||||||
|
nacos.core.auth.enabled=true
|
||||||
|
nacos.core.auth.username=nacos
|
||||||
|
nacos.core.auth.password=Lng@123
|
||||||
|
|
||||||
|
# 配置 JWT 密钥(必须自定义,长度至少32位)
|
||||||
|
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
|
||||||
|
# 关闭用户代理白名单(增强安全性)
|
||||||
|
nacos.core.auth.enable.userAgentAuthWhite=false
|
||||||
|
# 配置服务端身份识别(可选,用于集群环境)
|
||||||
|
nacos.core.auth.server.identity.key=serverIdentity
|
||||||
|
nacos.core.auth.server.identity.value=security
|
||||||
|
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
|
||||||
|
### worked when nacos.core.auth.system.type=nacos
|
||||||
|
### The token expiration in seconds:
|
||||||
|
nacos.core.auth.plugin.nacos.token.cache.enable=false
|
||||||
|
nacos.core.auth.plugin.nacos.token.expire.seconds=18000
|
||||||
|
nacos.config.push.maxRetryTime=50
|
||||||
|
nacos.cmdb.dumpTaskInterval=3600
|
||||||
|
nacos.cmdb.eventTaskInterval=10
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if container_exists; then
|
||||||
|
echo "容器 $CONTAINER_NAME 已存在,尝试启动..."
|
||||||
|
start_service
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查镜像是否存在,不存在则拉取
|
||||||
|
if ! docker images --format "{{.Repository}}:{{.Tag}}" | grep -q "$FULL_IMAGE"; then
|
||||||
|
echo "本地不存在镜像 $FULL_IMAGE,开始拉取..."
|
||||||
|
pull_image || exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "开始部署 $CONTAINER_NAME 服务..."
|
||||||
|
|
||||||
|
docker run -d --restart always --name nacos-server \
|
||||||
|
-p 8848:8848 -p 9848:9848 -p 9849:9849 \
|
||||||
|
-e MODE=standalone \
|
||||||
|
-v $CONFIG_DIR/application.properties:/home/nacos/conf/application.properties \
|
||||||
|
$FULL_IMAGE
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "nacos容器部署成功!"
|
||||||
|
echo "容器名称: $CONTAINER_NAME"
|
||||||
|
echo "映射端口: 8848 9848 9849"
|
||||||
|
docker network connect --ip 172.20.0.5 scm-net $CONTAINER_NAME
|
||||||
|
else
|
||||||
|
echo "Redis容器部署失败!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 启动服务
|
||||||
|
start_service() {
|
||||||
|
check_docker
|
||||||
|
|
||||||
|
if ! container_exists; then
|
||||||
|
echo "错误: 容器 $CONTAINER_NAME 不存在,请先执行 deploy 命令"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if container_running; then
|
||||||
|
echo "服务 $CONTAINER_NAME 已在运行中"
|
||||||
|
status_service
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "启动 $CONTAINER_NAME 服务..."
|
||||||
|
docker start "$CONTAINER_NAME"
|
||||||
|
status_service
|
||||||
|
}
|
||||||
|
|
||||||
|
# 停止服务
|
||||||
|
stop_service() {
|
||||||
|
check_docker
|
||||||
|
|
||||||
|
if ! container_exists; then
|
||||||
|
echo "错误: 容器 $CONTAINER_NAME 不存在"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! container_running; then
|
||||||
|
echo "服务 $CONTAINER_NAME 已停止"
|
||||||
|
status_service
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "停止 $CONTAINER_NAME 服务..."
|
||||||
|
docker stop "$CONTAINER_NAME"
|
||||||
|
status_service
|
||||||
|
}
|
||||||
|
|
||||||
|
# 重启服务
|
||||||
|
restart_service() {
|
||||||
|
check_docker
|
||||||
|
|
||||||
|
if ! container_exists; then
|
||||||
|
echo "错误: 容器 $CONTAINER_NAME 不存在,请先执行 deploy 命令"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "重启 $CONTAINER_NAME 服务..."
|
||||||
|
docker restart "$CONTAINER_NAME"
|
||||||
|
status_service
|
||||||
|
}
|
||||||
|
|
||||||
|
# 查看服务状态
|
||||||
|
status_service() {
|
||||||
|
check_docker
|
||||||
|
|
||||||
|
if ! container_exists; then
|
||||||
|
echo "容器 $CONTAINER_NAME 不存在"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$CONTAINER_NAME 服务状态:"
|
||||||
|
docker ps -f "name=$CONTAINER_NAME" --format "ID: {{.ID}}\n名称: {{.Names}}\n镜像: {{.Image}}\n状态: {{.Status}}\n端口: {{.Ports}}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 查看服务日志
|
||||||
|
logs_service() {
|
||||||
|
check_docker
|
||||||
|
|
||||||
|
if ! container_exists; then
|
||||||
|
echo "错误: 容器 $CONTAINER_NAME 不存在"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "查看 $CONTAINER_NAME 服务日志 (按Ctrl+C退出)..."
|
||||||
|
docker logs -f --tail 100 "$CONTAINER_NAME"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 删除容器(需先停止)
|
||||||
|
remove_service() {
|
||||||
|
check_docker
|
||||||
|
|
||||||
|
if ! container_exists; then
|
||||||
|
echo "错误: 容器 $CONTAINER_NAME 不存在"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if container_running; then
|
||||||
|
echo "错误: 容器 $CONTAINER_NAME 正在运行,请先停止"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "删除 $CONTAINER_NAME 容器..."
|
||||||
|
docker rm "$CONTAINER_NAME"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "容器 $CONTAINER_NAME 已删除"
|
||||||
|
else
|
||||||
|
echo "删除容器失败"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主逻辑
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
deploy)
|
||||||
|
deploy_service
|
||||||
|
;;
|
||||||
|
start)
|
||||||
|
start_service
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
stop_service
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
restart_service
|
||||||
|
;;
|
||||||
|
status)
|
||||||
|
status_service
|
||||||
|
;;
|
||||||
|
logs)
|
||||||
|
logs_service
|
||||||
|
;;
|
||||||
|
remove)
|
||||||
|
remove_service
|
||||||
|
;;
|
||||||
|
pull)
|
||||||
|
pull_image
|
||||||
|
;;
|
||||||
|
help)
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "错误: 未知命令 '$1'"
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
esac
|
||||||
134
宝策/docker_redis.sh
Normal file
134
宝策/docker_redis.sh
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Redis容器名称
|
||||||
|
CONTAINER_NAME="redis"
|
||||||
|
# Redis版本
|
||||||
|
REDIS_VERSION="7.0.2"
|
||||||
|
# 映射端口(主机:容器)
|
||||||
|
PORT="6379:6379"
|
||||||
|
# 密码
|
||||||
|
REDIS_PASSWORD="tdjj2HH0fva^2R"
|
||||||
|
# 网络配置
|
||||||
|
NETWORK="scm-net"
|
||||||
|
# 容器IP
|
||||||
|
CONTAINER_IP="172.20.0.2"
|
||||||
|
|
||||||
|
# 部署Redis
|
||||||
|
deploy() {
|
||||||
|
if [ "$(docker ps -q -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "Redis容器 $CONTAINER_NAME 已存在并运行中"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "发现已停止的Redis容器,正在启动..."
|
||||||
|
docker start $CONTAINER_NAME
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "开始部署Redis容器..."
|
||||||
|
|
||||||
|
docker run -itd --restart always \
|
||||||
|
--net=$NETWORK --ip=$CONTAINER_IP \
|
||||||
|
-p $PORT \
|
||||||
|
--name $CONTAINER_NAME \
|
||||||
|
redis:$REDIS_VERSION \
|
||||||
|
--requirepass $REDIS_PASSWORD
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Redis容器部署成功!"
|
||||||
|
echo "容器名称: $CONTAINER_NAME"
|
||||||
|
echo "映射端口: $PORT"
|
||||||
|
else
|
||||||
|
echo "Redis容器部署失败!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 查看日志
|
||||||
|
logs() {
|
||||||
|
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "Redis容器 $CONTAINER_NAME 不存在"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "查看Redis容器日志 (按Ctrl+C退出)..."
|
||||||
|
docker logs -f --tail 200 $CONTAINER_NAME
|
||||||
|
}
|
||||||
|
|
||||||
|
# 重启容器
|
||||||
|
restart() {
|
||||||
|
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "Redis容器 $CONTAINER_NAME 不存在"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "正在重启Redis容器..."
|
||||||
|
docker restart $CONTAINER_NAME
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Redis容器重启成功!"
|
||||||
|
else
|
||||||
|
echo "Redis容器重启失败!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 删除容器
|
||||||
|
remove() {
|
||||||
|
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "Redis容器 $CONTAINER_NAME 不存在"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "警告:此操作将删除Redis容器"
|
||||||
|
read -p "确定要删除吗?(y/n) " confirm
|
||||||
|
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
|
||||||
|
echo "取消删除操作"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "正在停止并删除Redis容器..."
|
||||||
|
docker stop $CONTAINER_NAME
|
||||||
|
docker rm $CONTAINER_NAME
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Redis容器删除成功!"
|
||||||
|
else
|
||||||
|
echo "Redis容器删除失败!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 显示帮助
|
||||||
|
show_help() {
|
||||||
|
echo "Redis容器管理脚本"
|
||||||
|
echo "用法: $0 [命令]"
|
||||||
|
echo "命令列表:"
|
||||||
|
echo " deploy - 部署并启动Redis容器"
|
||||||
|
echo " logs - 查看Redis容器日志"
|
||||||
|
echo " restart - 重启Redis容器"
|
||||||
|
echo " remove - 删除Redis容器"
|
||||||
|
echo " help - 显示帮助信息"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主逻辑
|
||||||
|
case "$1" in
|
||||||
|
deploy)
|
||||||
|
deploy
|
||||||
|
;;
|
||||||
|
logs)
|
||||||
|
logs
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
restart
|
||||||
|
;;
|
||||||
|
remove)
|
||||||
|
remove
|
||||||
|
;;
|
||||||
|
help)
|
||||||
|
show_help
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "未知命令: $1"
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
169
宝策/docker_registry.sh
Normal file
169
宝策/docker_registry.sh
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Docker Registry容器名称
|
||||||
|
CONTAINER_NAME="docker-registry"
|
||||||
|
# Registry版本
|
||||||
|
REGISTRY_VERSION="2"
|
||||||
|
# 映射端口
|
||||||
|
PORT="5000"
|
||||||
|
# 数据存储路径
|
||||||
|
DATA_PATH="/docker-data/registry/data"
|
||||||
|
# 日志路径
|
||||||
|
LOG_PATH="/docker-data/registry/logs"
|
||||||
|
# 认证配置路径
|
||||||
|
AUTH_PATH="/docker/registry/auth"
|
||||||
|
# admin Docker@123
|
||||||
|
# htpasswd -Bbc "/docker/registry/auth/htpasswd" "admin" "Docker@123"
|
||||||
|
|
||||||
|
# 创建目录并设置权限函数
|
||||||
|
create_dirs() {
|
||||||
|
# 创建数据目录并设置权限
|
||||||
|
if [ ! -d "$DATA_PATH" ]; then
|
||||||
|
mkdir -p "$DATA_PATH"
|
||||||
|
echo "创建数据目录: $DATA_PATH"
|
||||||
|
chmod -R 777 "$DATA_PATH"
|
||||||
|
echo "设置数据目录权限: $DATA_PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 创建日志目录并设置权限
|
||||||
|
if [ ! -d "$LOG_PATH" ]; then
|
||||||
|
mkdir -p "$LOG_PATH"
|
||||||
|
echo "创建日志目录: $LOG_PATH"
|
||||||
|
chmod -R 777 "$LOG_PATH"
|
||||||
|
echo "设置日志目录权限: $LOG_PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 创建日志目录并设置权限
|
||||||
|
if [ ! -d "$AUTH_PATH" ]; then
|
||||||
|
mkdir -p "$AUTH_PATH"
|
||||||
|
echo "创建日志目录: $AUTH_PATH"
|
||||||
|
chmod -R 777 "$AUTH_PATH"
|
||||||
|
echo "设置日志目录权限: $AUTH_PATH"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 部署Registry
|
||||||
|
deploy() {
|
||||||
|
if [ "$(docker ps -q -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "Registry容器 $CONTAINER_NAME 已存在并运行中"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "发现已停止的Registry容器,正在启动..."
|
||||||
|
docker start $CONTAINER_NAME
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "开始部署Registry容器..."
|
||||||
|
create_dirs
|
||||||
|
|
||||||
|
docker run -d --restart always \
|
||||||
|
-p $PORT:5000 \
|
||||||
|
-v $DATA_PATH:/var/lib/registry \
|
||||||
|
-v $LOG_PATH:/var/log/registry \
|
||||||
|
-v $AUTH_PATH:/auth \
|
||||||
|
-e "REGISTRY_AUTH=htpasswd" \
|
||||||
|
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
|
||||||
|
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
|
||||||
|
--name $CONTAINER_NAME registry:$REGISTRY_VERSION
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Registry容器部署成功!"
|
||||||
|
echo "容器名称: $CONTAINER_NAME"
|
||||||
|
echo "访问地址: http://localhost:$PORT"
|
||||||
|
else
|
||||||
|
echo "Registry容器部署失败!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 查看日志
|
||||||
|
logs() {
|
||||||
|
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "Registry容器 $CONTAINER_NAME 不存在"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "查看Registry容器日志 (按Ctrl+C退出)..."
|
||||||
|
docker logs -f --tail 200 $CONTAINER_NAME
|
||||||
|
}
|
||||||
|
|
||||||
|
# 重启容器
|
||||||
|
restart() {
|
||||||
|
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "Registry容器 $CONTAINER_NAME 不存在"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "正在重启Registry容器..."
|
||||||
|
docker restart $CONTAINER_NAME
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Registry容器重启成功!"
|
||||||
|
else
|
||||||
|
echo "Registry容器重启失败!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 删除容器
|
||||||
|
remove() {
|
||||||
|
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "Registry容器 $CONTAINER_NAME 不存在"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "警告:此操作将删除Registry容器,但数据目录会保留"
|
||||||
|
read -p "确定要删除吗?(y/n) " confirm
|
||||||
|
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
|
||||||
|
echo "取消删除操作"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "正在停止并删除Registry容器..."
|
||||||
|
docker stop $CONTAINER_NAME
|
||||||
|
docker rm $CONTAINER_NAME
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Registry容器删除成功!"
|
||||||
|
echo "数据保留在: $DATA_PATH"
|
||||||
|
echo "日志保留在: $LOG_PATH"
|
||||||
|
else
|
||||||
|
echo "Registry容器删除失败!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 显示帮助
|
||||||
|
show_help() {
|
||||||
|
echo "Docker Registry容器管理脚本"
|
||||||
|
echo "用法: $0 [命令]"
|
||||||
|
echo "命令列表:"
|
||||||
|
echo " deploy - 部署并启动Registry容器"
|
||||||
|
echo " logs - 查看Registry容器日志"
|
||||||
|
echo " restart - 重启Registry容器"
|
||||||
|
echo " remove - 删除Registry容器(保留数据和日志)"
|
||||||
|
echo " help - 显示帮助信息"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主逻辑
|
||||||
|
case "$1" in
|
||||||
|
deploy)
|
||||||
|
deploy
|
||||||
|
;;
|
||||||
|
logs)
|
||||||
|
logs
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
restart
|
||||||
|
;;
|
||||||
|
remove)
|
||||||
|
remove
|
||||||
|
;;
|
||||||
|
help)
|
||||||
|
show_help
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "未知命令: $1"
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
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
|
||||||
161
宝策/docker_skywalking-oap.sh
Normal file
161
宝策/docker_skywalking-oap.sh
Normal file
@ -0,0 +1,161 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 定义变量
|
||||||
|
CONTAINER_NAME="skywalkingwalking-oap-server"
|
||||||
|
IMAGE_NAME="apache/skywalking-oap-server:9.4.0" # SkyWalking OAP 镜像及版本
|
||||||
|
DATA_DIR="/docker-data/skywalking/data" # 数据存储目录
|
||||||
|
LOGS_DIR="/docker-data/skywalking/logs" # 日志目录
|
||||||
|
PORT=12800 # OAP gRPC 端口
|
||||||
|
PORT1=11800 # OAP REST 端口
|
||||||
|
NETWORK_NAME="scm-net"
|
||||||
|
SW_IP="10.10.2.102" # 固定IP
|
||||||
|
ES_HOST="10.10.2.102" # 关联的Elasticsearch容器名称
|
||||||
|
ES_PORT=9200 # Elasticsearch端口
|
||||||
|
SW_STORAGE="elasticsearch7" # 存储类型(对应ES 7.x版本)
|
||||||
|
|
||||||
|
# 显示帮助信息
|
||||||
|
show_help() {
|
||||||
|
echo "使用方法: $0 [操作类型]"
|
||||||
|
echo "操作类型:"
|
||||||
|
echo " deploy - 部署并启动SkyWalking OAP Server容器"
|
||||||
|
echo " remove - 停止并删除SkyWalking OAP Server容器及数据/配置/日志目录"
|
||||||
|
echo " logs - 查看SkyWalking OAP Server容器日志"
|
||||||
|
echo " help - 显示帮助信息"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 部署功能
|
||||||
|
deploy_skywalking() {
|
||||||
|
# 检查数据、配置、日志目录是否存在,不存在则创建
|
||||||
|
for dir in "$DATA_DIR" "$LOGS_DIR"; do
|
||||||
|
if [ ! -d "$dir" ]; then
|
||||||
|
echo "创建目录: $dir"
|
||||||
|
mkdir -p "$dir"
|
||||||
|
chmod 777 "$dir" # 确保容器内用户可访问
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# 检查容器是否已存在,存在则停止并删除
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "停止并删除现有容器: $CONTAINER_NAME"
|
||||||
|
docker stop $CONTAINER_NAME
|
||||||
|
docker rm $CONTAINER_NAME
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 启动SkyWalking OAP Server容器
|
||||||
|
echo "启动SkyWalking OAP Server容器..."
|
||||||
|
docker run -d --privileged --name $CONTAINER_NAME --restart always \
|
||||||
|
-p $PORT:12800 -p $PORT1:11800 -p 1234:1234 \
|
||||||
|
-v $DATA_DIR:/skywalking/data \
|
||||||
|
-v $LOGS_DIR:/skywalking/logs \
|
||||||
|
-e TZ=Asia/Shanghai \
|
||||||
|
-e "SW_STORAGE=elasticsearch" \
|
||||||
|
-e "SW_STORAGE_ES_CLUSTER_NODES=$ES_HOST:$ES_PORT" \
|
||||||
|
-e "SW_ES_VERSION=7" \
|
||||||
|
-e "SW_STORAGE_ES_USE_HIGH_LEVEL_CLIENT=true" \
|
||||||
|
$IMAGE_NAME
|
||||||
|
|
||||||
|
# 检查容器启动状态
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME -f status=running)" ]; then
|
||||||
|
echo "SkyWalking OAP Server容器启动成功!"
|
||||||
|
echo "容器名称: $CONTAINER_NAME"
|
||||||
|
echo "数据目录: $DATA_DIR"
|
||||||
|
echo "日志目录: $LOGS_DIR"
|
||||||
|
echo "gRPC端口: $PORT"
|
||||||
|
echo "REST端口: $PORT1"
|
||||||
|
echo "关联Elasticsearch: $ES_HOST:$ES_PORT"
|
||||||
|
echo "存储类型: $SW_STORAGE"
|
||||||
|
else
|
||||||
|
echo "SkyWalking OAP Server容器启动失败,请检查日志获取详细信息。"
|
||||||
|
docker logs $CONTAINER_NAME
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 删除功能
|
||||||
|
remove_skywalking() {
|
||||||
|
# 检查容器是否存在
|
||||||
|
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
|
||||||
|
|
||||||
|
# 检查日志目录是否存在
|
||||||
|
if [ -d "$LOGS_DIR" ]; then
|
||||||
|
read -p "是否删除日志目录 $LOGS_DIR? (y/n) " confirm
|
||||||
|
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
|
||||||
|
echo "删除日志目录: $LOGS_DIR"
|
||||||
|
rm -rf "$LOGS_DIR"
|
||||||
|
else
|
||||||
|
echo "保留日志目录: $LOGS_DIR"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "日志目录 $LOGS_DIR 不存在"
|
||||||
|
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 [ $# -ne 1 ]; then
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
deploy)
|
||||||
|
deploy_skywalking
|
||||||
|
;;
|
||||||
|
remove)
|
||||||
|
remove_skywalking
|
||||||
|
;;
|
||||||
|
logs)
|
||||||
|
show_logs
|
||||||
|
;;
|
||||||
|
help)
|
||||||
|
show_help
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "无效的操作类型: $1"
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
123
宝策/docker_skywalking-ui.sh
Normal file
123
宝策/docker_skywalking-ui.sh
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 定义变量
|
||||||
|
CONTAINER_NAME="skywalking-ui"
|
||||||
|
IMAGE_NAME="apache/skywalking-ui:9.4.0" # SkyWalking UI 镜像及版本
|
||||||
|
LOGS_DIR="/docker-data/skywalking/ui/logs" # 日志目录
|
||||||
|
PORT=9601 # UI 访问端口
|
||||||
|
NETWORK_NAME="scm-net"
|
||||||
|
UI_IP="10.10.2.102" # 固定IP,与ES、OAP在同一网段
|
||||||
|
OAP_HOST="10.10.2.102" # 关联的OAP服务器IP
|
||||||
|
OAP_PORT=12800 # OAP gRPC端口
|
||||||
|
|
||||||
|
# 显示帮助信息
|
||||||
|
show_help() {
|
||||||
|
echo "使用方法: $0 [操作类型]"
|
||||||
|
echo "操作类型:"
|
||||||
|
echo " deploy - 部署并启动SkyWalking UI容器"
|
||||||
|
echo " remove - 停止并删除SkyWalking UI容器及日志目录"
|
||||||
|
echo " logs - 查看SkyWalking UI容器日志"
|
||||||
|
echo " help - 显示帮助信息"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 部署功能
|
||||||
|
deploy_skywalking_ui() {
|
||||||
|
# 检查日志目录是否存在,不存在则创建
|
||||||
|
if [ ! -d "$LOGS_DIR" ]; then
|
||||||
|
echo "创建日志目录: $LOGS_DIR"
|
||||||
|
mkdir -p "$LOGS_DIR"
|
||||||
|
chmod 777 "$LOGS_DIR" # 确保容器内用户可访问
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查容器是否已存在,存在则停止并删除
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "停止并删除现有容器: $CONTAINER_NAME"
|
||||||
|
docker stop $CONTAINER_NAME
|
||||||
|
docker rm $CONTAINER_NAME
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 启动SkyWalking UI容器
|
||||||
|
echo "启动SkyWalking UI容器..."
|
||||||
|
docker run -d --privileged --name $CONTAINER_NAME --restart always \
|
||||||
|
-p $PORT:8080 \
|
||||||
|
-v $LOGS_DIR:/skywalking/ui/logs \
|
||||||
|
-e TZ=Asia/Shanghai \
|
||||||
|
-e "SW_OAP_ADDRESS=http://$OAP_HOST:$OAP_PORT" \
|
||||||
|
$IMAGE_NAME
|
||||||
|
|
||||||
|
# 检查容器启动状态
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME -f status=running)" ]; then
|
||||||
|
echo "SkyWalking UI容器启动成功!"
|
||||||
|
echo "容器名称: $CONTAINER_NAME"
|
||||||
|
echo "日志目录: $LOGS_DIR"
|
||||||
|
echo "访问端口: $PORT"
|
||||||
|
echo "关联OAP服务器: $OAP_HOST:$OAP_PORT"
|
||||||
|
echo "访问地址: http://localhost:$PORT"
|
||||||
|
else
|
||||||
|
echo "SkyWalking UI容器启动失败,请检查日志获取详细信息。"
|
||||||
|
docker logs $CONTAINER_NAME
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 删除功能
|
||||||
|
remove_skywalking_ui() {
|
||||||
|
# 检查容器是否存在
|
||||||
|
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 "$LOGS_DIR" ]; then
|
||||||
|
read -p "是否删除日志目录 $LOGS_DIR? (y/n) " confirm
|
||||||
|
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
|
||||||
|
echo "删除日志目录: $LOGS_DIR"
|
||||||
|
rm -rf "$LOGS_DIR"
|
||||||
|
else
|
||||||
|
echo "保留日志目录: $LOGS_DIR"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "日志目录 $LOGS_DIR 不存在"
|
||||||
|
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 [ $# -ne 1 ]; then
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
deploy)
|
||||||
|
deploy_skywalking_ui
|
||||||
|
;;
|
||||||
|
remove)
|
||||||
|
remove_skywalking_ui
|
||||||
|
;;
|
||||||
|
logs)
|
||||||
|
show_logs
|
||||||
|
;;
|
||||||
|
help)
|
||||||
|
show_help
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "无效的操作类型: $1"
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
147
宝策/docker_xxl-job.sh
Normal file
147
宝策/docker_xxl-job.sh
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# XXL-Job容器名称
|
||||||
|
CONTAINER_NAME="xxl-job-server"
|
||||||
|
# XXL-Job镜像版本
|
||||||
|
XXL_JOB_VERSION="2.4.0"
|
||||||
|
# 镜像地址
|
||||||
|
IMAGE_URL="docker.tanuki.vip/xxl-job-admin-kingbase:${XXL_JOB_VERSION}"
|
||||||
|
# 映射端口(宿主:容器)
|
||||||
|
PORT="9600"
|
||||||
|
# 环境变量配置
|
||||||
|
DB_URL="jdbc:kingbase8://10.10.2.102:54321/itc?currentSchema=xxl_job&useUnicode=true&characterEncoding=UTF-8"
|
||||||
|
DB_USERNAME="itc_dne"
|
||||||
|
DB_PASSWORD="itc_dne"
|
||||||
|
DB_DRIVER="com.kingbase8.Driver"
|
||||||
|
|
||||||
|
# 创建目录并设置权限函数(如需数据持久化可添加)
|
||||||
|
create_dirs() {
|
||||||
|
# 示例:如需挂载配置目录可在此添加
|
||||||
|
# if [ ! -d "$CONFIG_PATH" ]; then
|
||||||
|
# mkdir -p "$CONFIG_PATH"
|
||||||
|
# echo "创建配置目录: $CONFIG_PATH"
|
||||||
|
# chmod -R 777 "$CONFIG_PATH"
|
||||||
|
# echo "设置配置目录权限: $CONFIG_PATH"
|
||||||
|
# fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# 部署XXL-Job
|
||||||
|
deploy() {
|
||||||
|
if [ "$(docker ps -q -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "XXL-Job容器 $CONTAINER_NAME 已存在并运行中"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "发现已停止的XXL-Job容器,正在启动..."
|
||||||
|
docker start $CONTAINER_NAME
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "开始部署XXL-Job容器..."
|
||||||
|
create_dirs
|
||||||
|
|
||||||
|
docker run -d --restart always \
|
||||||
|
-p $PORT:8080 \
|
||||||
|
--name $CONTAINER_NAME \
|
||||||
|
-e "PARAMS=--spring.datasource.url=$DB_URL --spring.datasource.username=$DB_USERNAME --spring.datasource.password=$DB_PASSWORD --spring.datasource.driver-class-name=$DB_DRIVER" \
|
||||||
|
$IMAGE_URL
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "XXL-Job容器部署成功!"
|
||||||
|
echo "容器名称: $CONTAINER_NAME"
|
||||||
|
echo "端口映射: $PORT"
|
||||||
|
else
|
||||||
|
echo "XXL-Job容器部署失败!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 查看日志
|
||||||
|
logs() {
|
||||||
|
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "XXL-Job容器 $CONTAINER_NAME 不存在"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "查看XXL-Job容器日志 (按Ctrl+C退出)..."
|
||||||
|
docker logs -f --tail 200 $CONTAINER_NAME
|
||||||
|
}
|
||||||
|
|
||||||
|
# 重启容器
|
||||||
|
restart() {
|
||||||
|
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "XXL-Job容器 $CONTAINER_NAME 不存在"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "正在重启XXL-Job容器..."
|
||||||
|
docker restart $CONTAINER_NAME
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "XXL-Job容器重启成功!"
|
||||||
|
else
|
||||||
|
echo "XXL-Job容器重启失败!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 删除容器
|
||||||
|
remove() {
|
||||||
|
if [ ! "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
|
||||||
|
echo "XXL-Job容器 $CONTAINER_NAME 不存在"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "警告:此操作将删除XXL-Job容器"
|
||||||
|
read -p "确定要删除吗?(y/n) " confirm
|
||||||
|
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
|
||||||
|
echo "取消删除操作"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "正在停止并删除XXL-Job容器..."
|
||||||
|
docker stop $CONTAINER_NAME
|
||||||
|
docker rm $CONTAINER_NAME
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "XXL-Job容器删除成功!"
|
||||||
|
else
|
||||||
|
echo "XXL-Job容器删除失败!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 显示帮助
|
||||||
|
show_help() {
|
||||||
|
echo "XXL-Job容器管理脚本"
|
||||||
|
echo "用法: $0 [命令]"
|
||||||
|
echo "命令列表:"
|
||||||
|
echo " deploy - 部署并启动XXL-Job容器"
|
||||||
|
echo " logs - 查看XXL-Job容器日志"
|
||||||
|
echo " restart - 重启XXL-Job容器"
|
||||||
|
echo " remove - 删除XXL-Job容器"
|
||||||
|
echo " help - 显示帮助信息"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主逻辑
|
||||||
|
case "$1" in
|
||||||
|
deploy)
|
||||||
|
deploy
|
||||||
|
;;
|
||||||
|
logs)
|
||||||
|
logs
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
restart
|
||||||
|
;;
|
||||||
|
remove)
|
||||||
|
remove
|
||||||
|
;;
|
||||||
|
help)
|
||||||
|
show_help
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "未知命令: $1"
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
138
宝策/projects/docker-facade.sh
Normal file
138
宝策/projects/docker-facade.sh
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
#!/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
|
||||||
138
宝策/projects/docker-gateway.sh
Normal file
138
宝策/projects/docker-gateway.sh
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 定义变量
|
||||||
|
CONTAINER_NAME="itc-ms-gateway"
|
||||||
|
IMAGE_NAME="127.0.0.1:5000/itc-ms-gateway"
|
||||||
|
IMAGE_VERSION="2025-09-15-0353"
|
||||||
|
IMAGE_FULL="$IMAGE_NAME:$IMAGE_VERSION"
|
||||||
|
PORT=9500 # 服务暴露端口
|
||||||
|
DEBUG_PORT=9501 # 服务暴露端口
|
||||||
|
DISCOVERY_IP="10.10.2.102"
|
||||||
|
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 itc-ms-gateway \
|
||||||
|
-p $PORT:8090 \
|
||||||
|
-p $DEBUG_PORT:5005 \
|
||||||
|
-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://$DISCOVERY_IP:$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
|
||||||
139
宝策/projects/docker-system.sh
Normal file
139
宝策/projects/docker-system.sh
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 定义变量
|
||||||
|
CONTAINER_NAME="itc-ms-system"
|
||||||
|
IMAGE_NAME="127.0.0.1:5000/itc-ms-system"
|
||||||
|
IMAGE_VERSION="2025-09-29-0843"
|
||||||
|
IMAGE_FULL="$IMAGE_NAME:$IMAGE_VERSION"
|
||||||
|
|
||||||
|
PORT=9509 # 服务暴露端口
|
||||||
|
DEBUG_PORT=9510 # 服务暴露端口
|
||||||
|
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:8091 -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 --tail 200 $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
|
||||||
137
宝策/projects/docker-user.sh
Normal file
137
宝策/projects/docker-user.sh
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 定义变量
|
||||||
|
CONTAINER_NAME="itc-ms-user"
|
||||||
|
IMAGE_NAME="127.0.0.1:5000/itc-ms-user"
|
||||||
|
IMAGE_VERSION="2025-09-08-0929"
|
||||||
|
IMAGE_FULL="$IMAGE_NAME:$IMAGE_VERSION"
|
||||||
|
PORT=9503 # 服务暴露端口
|
||||||
|
DEBUG_PORT=9504 # 服务暴露端口
|
||||||
|
DISCOVERY_IP="10.10.2.102"
|
||||||
|
NACOS_ADDR="10.10.2.102:8848"
|
||||||
|
NACOS_USER="nacos"
|
||||||
|
SKYWALKING_SERVER="10.10.2.102:11800"
|
||||||
|
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:8092 -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
|
||||||
305
宝策/projects/docker-web.sh
Normal file
305
宝策/projects/docker-web.sh
Normal file
@ -0,0 +1,305 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 定义变量
|
||||||
|
CONTAINER_NAME="itc-web"
|
||||||
|
IMAGE_NAME="127.0.0.1:5000/itc-web"
|
||||||
|
IMAGE_VERSION="1.0.0"
|
||||||
|
IMAGE_FULL="$IMAGE_NAME:$IMAGE_VERSION"
|
||||||
|
PORT=9502 # 服务暴露端口
|
||||||
|
file="$CONTAINER_NAME-version.txt"
|
||||||
|
CONF_PATH="/docker-data/itc-web/conf"
|
||||||
|
|
||||||
|
# 检查文件是否存在(假设 $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 - 显示帮助信息"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 创建目录并设置权限函数
|
||||||
|
create_dirs() {
|
||||||
|
# 创建数据目录并设置权限
|
||||||
|
if [ ! -d "$CONF_PATH" ]; then
|
||||||
|
mkdir -p "$CONF_PATH"
|
||||||
|
echo "创建数据目录: $CONF_PATH"
|
||||||
|
chmod -R 777 "$CONF_PATH"
|
||||||
|
echo "设置数据目录权限: $CONF_PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 生成单机模式配置文件(若不存在)
|
||||||
|
if [ ! -f "$CONF_PATH/nginx.conf" ]; then
|
||||||
|
echo "生成配置文件: $CONF_PATH/nginx.conf"
|
||||||
|
cat > "$CONF_PATH/nginx.conf" << EOF
|
||||||
|
#user nobody;
|
||||||
|
|
||||||
|
# 工作进程数:自动匹配CPU核心数(比固定值更灵活)
|
||||||
|
worker_processes 4;
|
||||||
|
|
||||||
|
# 错误日志:开启并按级别分离(方便问题定位)
|
||||||
|
error_log /var/log/nginx/error.log notice;
|
||||||
|
pid /run/nginx.pid;
|
||||||
|
|
||||||
|
# 全局资源限制(避免文件描述符不足)
|
||||||
|
worker_rlimit_nofile 65535;
|
||||||
|
|
||||||
|
events {
|
||||||
|
# 每个工作进程最大连接数(结合系统ulimit调整)
|
||||||
|
worker_connections 8192;
|
||||||
|
# 高效事件模型(Linux推荐epoll,FreeBSD用kqueue)
|
||||||
|
use epoll;
|
||||||
|
# 一次性接受所有新连接(提高连接处理效率)
|
||||||
|
multi_accept on;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
http {
|
||||||
|
include mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
# 日志格式优化:增加响应时间和 upstream 信息(便于性能分析)
|
||||||
|
log_format main '\$remote_addr - \$remote_user [\$time_local] "\$request" '
|
||||||
|
'\$status $body_bytes_sent "\$http_referer" '
|
||||||
|
'"\$http_user_agent" "\$http_x_forwarded_for" '
|
||||||
|
'\$request_time \$upstream_response_time';
|
||||||
|
# 访问日志:开启(生产环境可按需关闭或调整路径)
|
||||||
|
access_log /var/log/nginx/access.log main;
|
||||||
|
|
||||||
|
# 高效文件传输
|
||||||
|
sendfile on;
|
||||||
|
# 静态文件传输优化(配合sendfile使用,减少TCP包数量)
|
||||||
|
tcp_nopush on;
|
||||||
|
# 动态内容优化(减少网络延迟)
|
||||||
|
tcp_nodelay on;
|
||||||
|
|
||||||
|
# 长连接设置
|
||||||
|
keepalive_timeout 65; # 连接超时时间
|
||||||
|
keepalive_requests 1000; # 每个连接最大请求数(防止长连接占用)
|
||||||
|
keepalive_disable msie6; # 对老旧IE禁用长连接
|
||||||
|
|
||||||
|
# 客户端请求限制(防攻击)
|
||||||
|
client_max_body_size 100m; # 缩小上传限制(1024m过大,按需调整)
|
||||||
|
client_body_buffer_size 1m; # 客户端请求体缓冲区(原1024k保留,单位统一)
|
||||||
|
client_body_timeout 120s; # 客户端发送请求体超时
|
||||||
|
client_header_timeout 120s; # 客户端发送请求头超时
|
||||||
|
|
||||||
|
|
||||||
|
# Gzip压缩优化
|
||||||
|
gzip on;
|
||||||
|
gzip_min_length 1k; # 最小压缩尺寸
|
||||||
|
gzip_comp_level 5; # 压缩级别(平衡CPU和带宽)
|
||||||
|
gzip_types
|
||||||
|
text/plain text/css text/xml application/json application/javascript application/x-javascript text/javascript application/xml application/xml+rss text/rss; # 明确需要压缩的类型
|
||||||
|
gzip_disable "MSIE [1-6]\."; # 禁用老旧IE压缩
|
||||||
|
gzip_vary on; # 告诉代理服务器缓存压缩和非压缩版本
|
||||||
|
gzip_buffers 16 8k; # 压缩缓冲区(默认值优化)
|
||||||
|
gzip_http_version 1.1; # 仅对HTTP/1.1及以上启用(避免兼容问题)
|
||||||
|
gzip_proxied any; # 对代理请求也启用压缩
|
||||||
|
|
||||||
|
# 隐藏nginx版本号(安全加固)
|
||||||
|
server_tokens off;
|
||||||
|
|
||||||
|
# 通用安全响应头(全局生效)
|
||||||
|
add_header X-Frame-Options "SAMEORIGIN"; # 防止点击劫持
|
||||||
|
add_header X-XSS-Protection "1; mode=block"; # 防XSS攻击
|
||||||
|
add_header X-Content-Type-Options "nosniff"; # 防止MIME类型嗅探
|
||||||
|
|
||||||
|
# 反向代理配置 http://10.4.126.112:23000
|
||||||
|
upstream upstream_name{
|
||||||
|
server 10.10.2.102:9500;
|
||||||
|
keepalive 32; # 长连接池大小,减少连接建立开销
|
||||||
|
keepalive_timeout 60s;
|
||||||
|
keepalive_requests 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
# 虚拟主机配置
|
||||||
|
server {
|
||||||
|
listen 8080;
|
||||||
|
listen [::]:8080;
|
||||||
|
# 建议替换为实际域名(如example.com),避免用localhost
|
||||||
|
#server_name 10.4.126.116;
|
||||||
|
|
||||||
|
# 网站根目录
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
# 默认索引文件
|
||||||
|
index index.html;
|
||||||
|
|
||||||
|
# API接口代理配置(优化版)
|
||||||
|
location ^~/api/ {
|
||||||
|
# 代理目标地址
|
||||||
|
proxy_pass http://upstream_name/;
|
||||||
|
|
||||||
|
# 增强头信息转发
|
||||||
|
proxy_set_header Host \$host;
|
||||||
|
proxy_set_header X-Real-IP \$remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
||||||
|
|
||||||
|
gzip off; # 禁用该接口的 gzip 压缩
|
||||||
|
proxy_set_header Accept-Encoding ""; # 清除传给后端的 Accept-Encoding 头
|
||||||
|
|
||||||
|
# 超时设置(API专用,可根据业务调整)
|
||||||
|
proxy_connect_timeout 300s;
|
||||||
|
proxy_send_timeout 300s;
|
||||||
|
proxy_read_timeout 300s;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
location ^~/preview/ {
|
||||||
|
# 代理目标地址
|
||||||
|
proxy_pass http://10.10.2.102:8012/preview/;
|
||||||
|
|
||||||
|
# 增强头信息转发
|
||||||
|
proxy_set_header Host \$host;
|
||||||
|
proxy_set_header X-Real-IP \$remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
|
||||||
|
|
||||||
|
gzip off; # 禁用该接口的 gzip 压缩
|
||||||
|
proxy_set_header Accept-Encoding ""; # 清除传给后端的 Accept-Encoding 头
|
||||||
|
|
||||||
|
# 超时设置(API专用,可根据业务调整)
|
||||||
|
proxy_connect_timeout 300s;
|
||||||
|
proxy_send_timeout 300s;
|
||||||
|
proxy_read_timeout 300s;
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主路径匹配
|
||||||
|
location / {
|
||||||
|
try_files \$uri \$uri/ /index.html; # 适合SPA应用(如Vue/React)
|
||||||
|
# 缓存控制:动态内容不缓存
|
||||||
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
||||||
|
add_header Pragma "no-cache";
|
||||||
|
add_header Expires "0";
|
||||||
|
}
|
||||||
|
|
||||||
|
# 静态资源缓存优化(比原配置更精细)
|
||||||
|
location ~* \.(gif|jpg|jpeg|png|ico|svg|js|css|json|txt)\$ {
|
||||||
|
# 缓存1天(可根据资源更新频率调整,如图片可设30d)
|
||||||
|
expires 1d;
|
||||||
|
add_header Cache-Control "public, max-age=86400";
|
||||||
|
}
|
||||||
|
|
||||||
|
# 错误页面配置
|
||||||
|
error_page 500 502 503 504 /50x.html;
|
||||||
|
location = /50x.html {
|
||||||
|
# 显式指定root(避免继承外层可能的变更)
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
}
|
||||||
|
|
||||||
|
# 禁止访问隐藏文件(如.git .env等)
|
||||||
|
location ~ /\. {
|
||||||
|
deny all;
|
||||||
|
access_log off;
|
||||||
|
log_not_found off;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# 部署服务
|
||||||
|
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 "启动服务容器..."
|
||||||
|
|
||||||
|
create_dirs
|
||||||
|
|
||||||
|
docker run -d --privileged --restart always --name $CONTAINER_NAME \
|
||||||
|
-p $PORT:8080 \
|
||||||
|
-v $CONF_PATH/nginx.conf:/etc/nginx/nginx.conf \
|
||||||
|
$IMAGE_FULL
|
||||||
|
|
||||||
|
# 检查启动状态
|
||||||
|
if [ "$(docker ps -aq -f name=$CONTAINER_NAME -f status=running)" ]; then
|
||||||
|
echo "服务启动成功!"
|
||||||
|
echo "容器名称: $CONTAINER_NAME"
|
||||||
|
echo "访问地址: http://localhost:$PORT"
|
||||||
|
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
|
||||||
137
宝策/projects/docker-workflow.sh
Normal file
137
宝策/projects/docker-workflow.sh
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 定义变量
|
||||||
|
CONTAINER_NAME="itc-ms-workflow-service"
|
||||||
|
IMAGE_NAME="127.0.0.1:5000/itc-ms-workflow-service"
|
||||||
|
IMAGE_VERSION="2025-09-08-0932"
|
||||||
|
IMAGE_FULL="$IMAGE_NAME:$IMAGE_VERSION"
|
||||||
|
PORT=9505 # 服务暴露端口
|
||||||
|
DEBUG_PORT=9506 # 服务暴露端口
|
||||||
|
DISCOVERY_IP="10.10.2.102"
|
||||||
|
NACOS_ADDR="10.10.2.102:8848"
|
||||||
|
NACOS_USER="nacos"
|
||||||
|
SKYWALKING_SERVER="10.10.2.102:11800"
|
||||||
|
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:8092 -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
|
||||||
161
宝策/projects/nginx.conf
Normal file
161
宝策/projects/nginx.conf
Normal file
@ -0,0 +1,161 @@
|
|||||||
|
#user nobody;
|
||||||
|
|
||||||
|
# 工作进程数:自动匹配CPU核心数(比固定值更灵活)
|
||||||
|
worker_processes auto;
|
||||||
|
# 绑定CPU核心(减少进程切换开销,0,1,2,3对应4核CPU)
|
||||||
|
worker_cpu_affinity 0001 0010 0100 1000;
|
||||||
|
|
||||||
|
# 错误日志:开启并按级别分离(方便问题定位)
|
||||||
|
error_log /var/log/nginx/error.log notice;
|
||||||
|
pid /run/nginx.pid;
|
||||||
|
|
||||||
|
# 全局资源限制(避免文件描述符不足)
|
||||||
|
worker_rlimit_nofile 65535;
|
||||||
|
|
||||||
|
events {
|
||||||
|
# 每个工作进程最大连接数(结合系统ulimit调整)
|
||||||
|
worker_connections 8192;
|
||||||
|
# 高效事件模型(Linux推荐epoll,FreeBSD用kqueue)
|
||||||
|
use epoll;
|
||||||
|
# 一次性接受所有新连接(提高连接处理效率)
|
||||||
|
multi_accept on;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
http {
|
||||||
|
include mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
# 日志格式优化:增加响应时间和 upstream 信息(便于性能分析)
|
||||||
|
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||||
|
'$status $body_bytes_sent "$http_referer" '
|
||||||
|
'"$http_user_agent" "$http_x_forwarded_for" '
|
||||||
|
'$request_time $upstream_response_time';
|
||||||
|
# 访问日志:开启(生产环境可按需关闭或调整路径)
|
||||||
|
access_log /var/log/nginx/access.log main;
|
||||||
|
|
||||||
|
# 高效文件传输
|
||||||
|
sendfile on;
|
||||||
|
# 静态文件传输优化(配合sendfile使用,减少TCP包数量)
|
||||||
|
tcp_nopush on;
|
||||||
|
# 动态内容优化(减少网络延迟)
|
||||||
|
tcp_nodelay on;
|
||||||
|
|
||||||
|
# 长连接设置
|
||||||
|
keepalive_timeout 65; # 连接超时时间
|
||||||
|
keepalive_requests 1000; # 每个连接最大请求数(防止长连接占用)
|
||||||
|
keepalive_disable msie6; # 对老旧IE禁用长连接
|
||||||
|
|
||||||
|
# 客户端请求限制(防攻击)
|
||||||
|
client_max_body_size 100m; # 缩小上传限制(1024m过大,按需调整)
|
||||||
|
client_body_buffer_size 1m; # 客户端请求体缓冲区(原1024k保留,单位统一)
|
||||||
|
client_body_timeout 120s; # 客户端发送请求体超时
|
||||||
|
client_header_timeout 120s; # 客户端发送请求头超时
|
||||||
|
|
||||||
|
|
||||||
|
# Gzip压缩优化
|
||||||
|
gzip on;
|
||||||
|
gzip_min_length 1k; # 最小压缩尺寸
|
||||||
|
gzip_comp_level 5; # 压缩级别(平衡CPU和带宽)
|
||||||
|
gzip_types
|
||||||
|
text/plain text/css text/xml application/json application/javascript application/x-javascript text/javascript application/xml application/xml+rss text/rss; # 明确需要压缩的类型
|
||||||
|
gzip_disable "MSIE [1-6]\."; # 禁用老旧IE压缩
|
||||||
|
gzip_vary on; # 告诉代理服务器缓存压缩和非压缩版本
|
||||||
|
gzip_buffers 16 8k; # 压缩缓冲区(默认值优化)
|
||||||
|
gzip_http_version 1.1; # 仅对HTTP/1.1及以上启用(避免兼容问题)
|
||||||
|
gzip_proxied any; # 对代理请求也启用压缩
|
||||||
|
|
||||||
|
# 隐藏nginx版本号(安全加固)
|
||||||
|
server_tokens off;
|
||||||
|
|
||||||
|
# 通用安全响应头(全局生效)
|
||||||
|
add_header X-Frame-Options "SAMEORIGIN"; # 防止点击劫持
|
||||||
|
add_header X-XSS-Protection "1; mode=block"; # 防XSS攻击
|
||||||
|
add_header X-Content-Type-Options "nosniff"; # 防止MIME类型嗅探
|
||||||
|
|
||||||
|
upstream upstream_name{
|
||||||
|
server 10.10.2.102:9500;
|
||||||
|
keepalive 32; # 长连接池大小,减少连接建立开销
|
||||||
|
keepalive_timeout 60s;
|
||||||
|
keepalive_requests 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
# 虚拟主机配置
|
||||||
|
server {
|
||||||
|
listen 8080;
|
||||||
|
listen [::]:8080;
|
||||||
|
# 建议替换为实际域名(如example.com),避免用localhost
|
||||||
|
#server_name 10.4.126.116;
|
||||||
|
|
||||||
|
# 网站根目录
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
# 默认索引文件
|
||||||
|
index index.html;
|
||||||
|
|
||||||
|
# API接口代理配置(优化版)
|
||||||
|
location ^~/api/ {
|
||||||
|
# 代理目标地址
|
||||||
|
proxy_pass http://upstream_name/;
|
||||||
|
|
||||||
|
# 增强头信息转发
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
|
||||||
|
gzip off; # 禁用该接口的 gzip 压缩
|
||||||
|
proxy_set_header Accept-Encoding ""; # 清除传给后端的 Accept-Encoding 头
|
||||||
|
|
||||||
|
# 超时设置(API专用,可根据业务调整)
|
||||||
|
proxy_connect_timeout 300s;
|
||||||
|
proxy_send_timeout 300s;
|
||||||
|
proxy_read_timeout 300s;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ^~/preview/ {
|
||||||
|
# 代理目标地址
|
||||||
|
proxy_pass http://10.10.2.102:8012/preview/;
|
||||||
|
|
||||||
|
# 增强头信息转发
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
|
||||||
|
gzip off; # 禁用该接口的 gzip 压缩
|
||||||
|
proxy_set_header Accept-Encoding ""; # 清除传给后端的 Accept-Encoding 头
|
||||||
|
|
||||||
|
# 超时设置(API专用,可根据业务调整)
|
||||||
|
proxy_connect_timeout 300s;
|
||||||
|
proxy_send_timeout 300s;
|
||||||
|
proxy_read_timeout 300s;
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主路径匹配
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.html; # 适合SPA应用(如Vue/React)
|
||||||
|
# 缓存控制:动态内容不缓存
|
||||||
|
add_header Cache-Control "no-cache, no-store, must-revalidate";
|
||||||
|
add_header Pragma "no-cache";
|
||||||
|
add_header Expires "0";
|
||||||
|
}
|
||||||
|
|
||||||
|
# 静态资源缓存优化(比原配置更精细)
|
||||||
|
location ~* \.(gif|jpg|jpeg|png|ico|svg|js|css|json|txt)$ {
|
||||||
|
# 缓存1天(可根据资源更新频率调整,如图片可设30d)
|
||||||
|
expires 1d;
|
||||||
|
add_header Cache-Control "public, max-age=86400";
|
||||||
|
}
|
||||||
|
|
||||||
|
# 错误页面配置
|
||||||
|
error_page 500 502 503 504 /50x.html;
|
||||||
|
location = /50x.html {
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
}
|
||||||
|
|
||||||
|
# 禁止访问隐藏文件(如.git .env等)
|
||||||
|
location ~ /\. {
|
||||||
|
deny all;
|
||||||
|
access_log off;
|
||||||
|
log_not_found off;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
23
宝策/宝策部署记录.md
Normal file
23
宝策/宝策部署记录.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# 中间件记录
|
||||||
|
| 服务名 | 端口 | 备注 |
|
||||||
|
| ---- | :----: | ---- |
|
||||||
|
| kingbase8 | 54321 | 人大金仓数据库
|
||||||
|
| redis | 6379 | 缓存数据库
|
||||||
|
| skywalking-ui | 9601 | 日志监控web
|
||||||
|
| skywalkingwalking-oap-server | 12800、11800 | 日志拦截
|
||||||
|
| elasticsearch | 9200、9300 | 日志存储
|
||||||
|
| minio | 9000、9001 | 文件存储 账号:admin/Pcitc@123
|
||||||
|
| kkfileview | 8012 | 文件预览
|
||||||
|
| nacos-server | 8848、9848、9849 | 注册中心 账号:nacos/Lng@123
|
||||||
|
| seata-server | 8091、7091 | 分布式事务
|
||||||
|
| xxl-job-server | 9600 | xxl-job 调度中心
|
||||||
|
----------
|
||||||
|
# 应用记录
|
||||||
|
| 服务名 | 端口 |
|
||||||
|
| ---- | :----: |
|
||||||
|
| itc-ms-gateway | 9500 |
|
||||||
|
| itc-web | 9502 |
|
||||||
|
| itc-ms-user | 9503 |
|
||||||
|
| itc-ms-workflow-service | 9505 |
|
||||||
|
| itc-ms-facade-service | 9507 |
|
||||||
|
| itc-ms-system | 9509 |
|
||||||
35
宝策开发环境安装记录.txt
Normal file
35
宝策开发环境安装记录.txt
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
##docker 自定义网络
|
||||||
|
docker network create --subnet=172.20.0.0/16 --gateway=172.20.0.1 scm-net
|
||||||
|
|
||||||
|
##安装 redis
|
||||||
|
docker run -itd --restart always --net=scm-net --ip=172.20.0.2 --name redis -p 6379:6379 redis:7.0.2 --requirepass tdjj2HH0fva^2R
|
||||||
|
|
||||||
|
连接
|
||||||
|
|
||||||
|
##安装 minio
|
||||||
|
docker run -d --restart always --net=scm-net --ip=172.20.0.3 \
|
||||||
|
--name minio \
|
||||||
|
-p 9000:9000 \
|
||||||
|
-p 9001:9001 \
|
||||||
|
-e "MINIO_ROOT_USER=admin" \
|
||||||
|
-e "MINIO_ROOT_PASSWORD=Pcitc@123" \
|
||||||
|
-e "MINIO_CONSOLE_ACKNOWLEDGE-AGPL=yes" \
|
||||||
|
-v /docker-data/minio/data:/data \
|
||||||
|
minio/minio:RELEASE.2025-07-23T15-54-02Z server /data --console-address ":9001"
|
||||||
|
|
||||||
|
# kingbase8 启动命令
|
||||||
|
docker run -d --privileged --restart always --net=scm-net --ip=172.20.0.4 -p 54321:54321 \
|
||||||
|
--name kingbase8 \
|
||||||
|
-e TZ=Asia/Shanghai -e NEED_START=yes \
|
||||||
|
-e DB_USER=itc_dne -e DB_PASSWORD=itc_dne -e DB_MODE=oracle \
|
||||||
|
-v /docker-data/kingbase/data:/home/kingbase/userdata/data \
|
||||||
|
kingbase-v8:v1
|
||||||
|
|
||||||
|
docker network connect --ip 172.20.0.4 scm-net $CONTAINER_NAME
|
||||||
|
|
||||||
|
docker run -d --net=scm-net --ip=172.20.0.8 ^
|
||||||
|
--name seata-server -p 8091:8091 -p 7091:7091 ^
|
||||||
|
-e SEATA_IP=172.19.3.230 ^
|
||||||
|
-v "E:/docker-data/seata-server/config/application.yml:/seata-server/resources/application.yml" ^
|
||||||
|
seata-server:2.3.0-kingbase8
|
||||||
|
|
||||||
BIN
超聚变服务器 Whitley平台 CentOS 8.X 安装案例 01.docx
Normal file
BIN
超聚变服务器 Whitley平台 CentOS 8.X 安装案例 01.docx
Normal file
Binary file not shown.
Reference in New Issue
Block a user