惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Privacy International News Feed
Hacker News - Newest:
Hacker News - Newest: "LLM"
Application and Cybersecurity Blog
Application and Cybersecurity Blog
N
News and Events Feed by Topic
Hacker News: Ask HN
Hacker News: Ask HN
V2EX - 技术
V2EX - 技术
L
LINUX DO - 最新话题
Google Online Security Blog
Google Online Security Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Stack Overflow Blog
Stack Overflow Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
P
Proofpoint News Feed
A
Arctic Wolf
Forbes - Security
Forbes - Security
Spread Privacy
Spread Privacy
Security Latest
Security Latest
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
CERT Recently Published Vulnerability Notes
Latest news
Latest news
AWS News Blog
AWS News Blog
M
MIT News - Artificial intelligence
GbyAI
GbyAI
V
Visual Studio Blog
T
The Blog of Author Tim Ferriss
有赞技术团队
有赞技术团队
Help Net Security
Help Net Security
博客园 - Franky
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
S
Schneier on Security
S
SegmentFault 最新的问题
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
PCI Perspectives
PCI Perspectives
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Palo Alto Networks Blog
SecWiki News
SecWiki News
TaoSecurity Blog
TaoSecurity Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
K
Kaspersky official blog
G
Google Developers Blog
H
Hacker News: Front Page
T
Tailwind CSS Blog
aimingoo的专栏
aimingoo的专栏
博客园 - 叶小钗
T
Troy Hunt's Blog
F
Full Disclosure
T
Threat Research - Cisco Blogs

博客园 - cn2025

HbuilderX 内置终端转为 gitBash 20260720 kubeSphere发布ruoyi-pro后端-用到脚本 kubeSphere发布ruoyi-web前端 20260711 kubeSphere发布ruoyi-pro后端 k8s集群-kubeShpere 20260710 安装Helm 20260710 k8s-portainer docker 镜像查询 k8集群一键重置 docker run OceanBase spring ai alibaba doc AI2.0 【多模态】 20260615 世界只有一个墨脱 AI2.0 【Mcp-client】 20260611 AI2.0 【Mcp-server】 20260611 GoLand 配Go SDK AI2.0 【redis向量-Rag】 问答顾问器QuestionAnswerAdvisor 20260608 AI2.0 【redis向量】redis-stack 20260608 AI2.0 【Embedding】嵌入模型 20260606 AI 工具 AI2.0 Tool调用20260604 AI2.0 对话chatMemory20260601 AI2.0 模型输出结构化【POJO、Record、List、Map 】20260530 AI2.0 Prompt【模板、流式 API、系统提示词】 20260529 AI2.0 自定义Advisor 20260528 AI2.0 ollama 20260528 AI2.0 dashscope-openai 20260527 ps 配Claude 20260527 spring-ai-alibaba-agent 260526 票务 Tool+Spring Security【动态tooLs:toolCallbacks】 20260525 spring-ai-alibaba-agent 260525 spring-ai-alibaba-agent 260523 票务 Tool接口 / 方法 / 参数【无意义、可读、业务化、参数数量过多】 20260521 票务 Tool参数幻觉 20260521 spring-ai-alibaba-agent 260521 ToolTemperature 温度过低,AI推算缺失自由度20260520 spring-ai-alibaba-agent 260520 票务Tool 20260519 票务助手 -多模型20260518 结构化输出 -原理【structuredconverter】20260518 spring-ai-alibaba-agent 260518 Dify 添加Ollma模型qwen2:0.5b 应用 20260516 docker 部【dify-api】/【dify-web】 20260514 Chatclient 结构化输出20260514 spring-ai-alibaba-agent 260514 Chatmemory 多层(近、中、长期)20260513 ChatmemoryRedis 历史对话存【REDIS】20260512 ChatmemoryJdbc 历史对话存【JDBC】20260511 spring-ai-alibaba-agent 260511 ChatmemoryConversationId 多用户对话记忆 20260508 spring-ai-alibaba-agent 260508 ChatmemoryMax 历史对话长度20260507 2026SE Chatmemory 对话记忆20260506 spring-ai-alibaba-agent 260506 ChatClientPrompt 自定义拦截器【ReReadingAdvisor】重读提示词 20260430 docker-apache/kafka:4.1.2部暑 集群20260423 ChatClientPrompt Template.st20260428 ChatClientPrompt Template20260427 sb-KafkaListener 20260425 docker-apache/kafka:4.1.2部暑 20260425 dashscope-sb ChatClientPrompt20260425 SBAI-MultiPlatformAndModel 20260424 PlatformModel SB-ChatClient-DeepSeekDashScopeOllamaModel 20260424 dashscope-sb ChatClient20260420 ollama-sb 多态 图转文 20260418 【gemma3:4b 解析慢】 dashscope-sb 多模态(图片、语音识别) 文生视频 ollama-sb 20260414 dashscope-sb 阿里百炼-文生图20260413 dashscope-sb20260413 dashscope-sb20260411 docker-zabbix 20260410 deepseek-sb20260408 MQTT20260403 spring-ai-alibaba-agent 260403 MqttTest 20260401 spring-ai-alibaba-agent 260401 docker安装 EMQX spring-ai-alibaba-agent 260331 MQTT 20260331 spring-ai-alibaba-agent 三大 Java 生态 AI Agent 框架 CentOS7-静态 IP centos-stream10 安装 百炼-工作流-sb sb-flink1.13.1-jdk8-分隔字符串 20260125
工具脚本【kubeSphere发布ruoyi-pro前端】20260720
2026cn · 2026-07-20 · via 博客园 - cn2025

一、WEB项目打包【npm run build:prod】并上传到工具宿主机

     宿主机【192.168.91.164: /home/web/yudao-web版本号     root/root】

      注版本号202607201317

1、hbuilderx-bash  免登录

###Bash 执行生成密钥

ssh-keygen -t rsa

####一路回车,无需设置密码

image

 ####公钥到服务器:

ssh-copy-id root@192.168.91.164

输入一次服务器 root 密码后,后续登录不再需要密码

2、web项目打包【npm run build:prod】并上传到工具宿主机的脚本

   build_upload.sh

#!/bin/bash
# 接收第一个入参:格式 YYYYMMDDHHMM
TIME_TAG="$1"
# 未传参则自动生成 当前年月日时分
if [ -z "${TIME_TAG}" ]; then
TIME_TAG=$(date +%Y%m%d%H%M)
fi
# 拼接远端完整目录
REMOTE_BASE="/home/web"
REMOTE_DIR="${REMOTE_BASE}/yudao-web${TIME_TAG}"

echo "==================== 发布信息 ===================="
echo "打包产物:dist-prod"
echo "远端目标目录:${REMOTE_DIR}"
echo "=================================================="

echo "===== 1. 执行生产打包 npm run build:prod ====="
npm run build:prod
if [ $? -ne 0 ]; then
echo "❌ 打包失败,终止上传流程"
exit 1
fi

echo "===== 2. 服务器自动创建目录(不存在则新建) ====="
ssh root@192.168.91.164 "mkdir -p ${REMOTE_DIR}"

echo "===== 3. 清空目标目录旧文件 ====="
ssh root@ "rm -rf ${REMOTE_DIR}/*"

echo "===== 4. 上传本地 dist-prod 全部资源 ====="
scp -r dist-prod/* root@192.168.91.164:${REMOTE_DIR}/

echo "✅ 打包上传完成,资源路径:${REMOTE_DIR}"

赋予脚本执行权限并运行:

chmod +x build_upload.sh

./build_upload.sh

image

image

二 脚本执行

image

1、生成镜像

./1web-build.sh   202607201317

image

2、镜像导出tar

./2web-save.sh   202607201317

image

3、tar推送到k8s节点的镜像

./3web-pull-k8s.sh   202607201317

image

k8s-master查看镜像

image

三、kubeSphere 的yaml版本升级

image

image

 旧版:192.168.91.164/rouyi-biz/yudao-web:20260908

新版:192.168.91.164/rouyi-biz/yudao-server:202607201317

   192.168.91.164/rouyi-biz/yudao-web:202607201317

6、参考脚本

1web-build.sh

#!/bin/bash
# 判断是否传入版本参数
if [ $# -ne 1 ]; then
echo "使用方式:./web-build.sh 版本号"
echo "示例:./web-build.sh 202607201317"
exit 1
fi

# 接收第一个入参作为版本
VERSION=$1

# 构建镜像命令
docker build \
--build-arg VERSION=${VERSION} \
-t 192.168.91.164/rouyi-biz/yudao-web:${VERSION} \
.

# 可选:构建完成自动推送镜像
# docker push 192.168.91.164/rouyi-biz/yudao-web:${VERSION}

2web-save.sh

#!/bin/bash
# 参数校验,必须传入1个版本号
if [ $# -ne 1 ]; then
echo "用法:$0 版本号"
echo "示例:$0 202607201317"
exit 1
fi

VERSION=$1
IMAGE_NAME="192.168.91.164/rouyi-biz/yudao-web:${VERSION}"
TAR_FILE="yudao-web${VERSION}.tar"

echo "开始导出镜像:${IMAGE_NAME}"
docker save -o ${TAR_FILE} ${IMAGE_NAME}
echo "镜像导出完成,文件:${TAR_FILE}"

3web-pull-k8s.sh

#!/bin/bash
# 批量分发web镜像tar并远端导入docker
# 使用方式 ./3web-pull-k8s.sh 版本号

# 入参校验
if [ $# -ne 1 ]; then
echo "使用方式:$0 版本号"
echo "示例:$0 202607201317"
echo "功能:将本地yudao-web{版本}.tar分发至166-master/167-node/168-node三台机器并自动导入镜像"
exit 1
fi

# 变量配置
TAG="$1"
TAR_FILE="yudao-web${TAG}.tar"
LOCAL_TAR="./${TAR_FILE}"
REMOTE_PATH="/root/${TAR_FILE}"
SSH_PASSWORD="root"
# 目标机器列表
NODE_LIST=(
"192.168.91.166"
"192.168.91.167"
"192.168.91.168"
)

# 校验本地tar文件是否存在
if [ ! -f "${LOCAL_TAR}" ]; then
echo "❌ 本地文件 ${LOCAL_TAR} 不存在,请先执行web-save.sh导出镜像!"
exit 2
fi

echo "====================================="
echo "待分发文件:${LOCAL_TAR}"
echo "目标节点:${NODE_LIST[*]}"
echo "远端账号密码:root / root"
echo "====================================="

# 循环遍历每台机器执行上传+导入
for node in "${NODE_LIST[@]}"; do
echo -e "\n==================== 开始处理节点 ${node} ===================="

# 1. scp上传tar包
echo "[1/3] 上传文件至 ${node}:/root/"
sshpass -p ${SSH_PASSWORD} scp "${LOCAL_TAR}" root@${node}:/root/
if [ $? -ne 0 ]; then
echo "❌ ${node} 文件上传失败,跳过当前节点"
continue
fi
echo "✅ ${node} 文件上传完成"

# 2. 远端导入docker镜像,导入后自动删除远端tar包释放磁盘
echo "[2/3] 在${node}执行docker load导入镜像"
sshpass -p ${SSH_PASSWORD} ssh root@${node} "docker load -i ${REMOTE_PATH} && rm -f ${REMOTE_PATH}"
if [ $? -ne 0 ]; then
echo "❌ ${node} 镜像导入失败"
continue
fi
echo "✅ ${node} 镜像导入成功,已清理远端tar包"

# 3. 查看当前节点yudao-web镜像列表做校验
echo "[3/3] 校验${node}已导入镜像:"
sshpass -p ${SSH_PASSWORD} ssh root@${node} "docker images | grep yudao-web"
done

echo -e "\n==================== 全部节点执行完毕 ===================="

Dockerfile

# 1. 全局定义构建参数VERSION,构建时传入,默认兜底dist兼容旧流程
ARG VERSION=""
# 基础Nginx镜像
FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/u-sb/nginx:latest

# FROM内部重新声明ARG,镜像层内才能使用变量
ARG VERSION

# 只清理默认页面,不删除sites配置文件
RUN rm -rf /var/www/html/*

# 复制自定义配置到conf.d,Nginx会自动加载该目录下所有.conf
COPY nginx.conf /etc/nginx/conf.d/default.conf

# 你想要新增的一行(本地必须有site-default.conf文件,否则build报错)
COPY nginx.conf /etc/nginx/sites-enabled/default


# 复制前端dist静态资源
#COPY dist /var/www/html

# 拼接目录 yudao-web${VERSION},完全对应你要的 yudao-web版本号
COPY yudao-web${VERSION} /var/www/html


# 前台运行Nginx,防止容器退出重启
CMD ["nginx", "-g", "daemon off;"]