----添加部署脚本和文档
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