----添加部署脚本和文档

This commit is contained in:
2025-10-10 09:12:33 +08:00
parent 56d70fc256
commit b607315428
26 changed files with 3231 additions and 0 deletions

View File

Binary file not shown.

BIN
java开发手册.docx Normal file

Binary file not shown.

BIN
~$va开放手册.docx Normal file

Binary file not shown.

222
宝策/docker_es.sh Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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

View 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

View 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
View 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

View 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

View 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

View 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

View 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

View 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推荐epollFreeBSD用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

View 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
View 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推荐epollFreeBSD用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;
}
}
}

View 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 |

View 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