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

推荐订阅源

N
Netflix TechBlog - Medium
I
Intezer
人人都是产品经理
人人都是产品经理
F
Full Disclosure
A
About on SuperTechFans
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
Google DeepMind News
Google DeepMind News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
J
Java Code Geeks
博客园 - 三生石上(FineUI控件)
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Blog — PlanetScale
Blog — PlanetScale
Microsoft Azure Blog
Microsoft Azure Blog
I
InfoQ
博客园 - 司徒正美
P
Proofpoint News Feed
宝玉的分享
宝玉的分享
Engineering at Meta
Engineering at Meta
F
Fortinet All Blogs
The GitHub Blog
The GitHub Blog
L
LangChain Blog
Last Week in AI
Last Week in AI
B
Blog
Project Zero
Project Zero
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Schneier on Security
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
U
Unit 42
B
Blog RSS Feed
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Privacy International News Feed
N
News and Events Feed by Topic
W
WeLiveSecurity
Cloudbric
Cloudbric
G
GRAHAM CLULEY
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
Check Point Blog
G
Google Developers Blog
The Last Watchdog
The Last Watchdog
Latest news
Latest news
S
Secure Thoughts
Simon Willison's Weblog
Simon Willison's Weblog
Scott Helme
Scott Helme
H
Heimdal Security Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog

博客园 - cn2025

工具脚本【kubeSphere发布ruoyi-pro前端】20260720 HbuilderX 内置终端转为 gitBash 20260720 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后端-用到脚本
2026cn · 2026-07-19 · via 博客园 - cn2025

一、生在jar并上传.91.164主机

image

image

 版本号202607190940

<properties>
   <!-- 新增时间戳格式 -->
<maven.build.timestamp.format>yyyyMMddHHmm</maven.build.timestamp.format>
</properties>
<build>
<!-- 打包带日期jar名 -->
<finalName>${project.artifactId}${maven.build.timestamp}</finalName>

<!-- 3. 【关键】添加 SSH 扩展支持,否则无法使用 scp 协议 -->
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>3.5.3</version>
</extension>
</extensions>

<plugins>
<!-- 打包 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal> <!-- 将引入的 jar 打入其中 -->
</goals>
</execution>
</executions>
</plugin>

<!-- 4. 自动上传插件 -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<!-- 对应 settings.xml 中的 ID -->
<serverId>remote-server</serverId>
<!-- 待上传的文件路径 (target目录下) -->
<fromFile>${project.build.directory}/${project.artifactId}${maven.build.timestamp}.jar</fromFile>
<!-- 远程服务器地址: scp://用户名@IP/目标目录 -->
<url>scp://root@192.168.91.164/home/biz</url>
</configuration>

<!-- 绑定生命周期:在执行完 package 后,自动执行 upload-single -->
<executions>
<execution>
<id>upload-deploy</id>
<phase>package</phase>
<goals>
<goal>upload-single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

image

image


二 脚本执行

image

1、生成镜像

./1biz-build.sh   202607190940

image

3、镜像导出tar

./2biz-save.sh   202607190940

image

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

./3biz-pull-k8s.sh   202607190940

image

k8s-master查看镜像

image

image

image

三、kubeSphere 的yaml版本升级

image

image

   旧版:yudao-server:20260716

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

   192.168.91.164/rouyi-biz/yudao-web:20260908

6、参考脚本

1biz-build.sh

#!/bin/bash

# 判断是否传入参数
if [ $# -ne 1 ]; then
echo "使用方式:$0 版本号"
echo "示例:$0 202607190832"
exit 1
fi

# 接收传入的第一个参数作为版本TAG
TAG="$1"
JAR_NAME="yudao-server${TAG}.jar"
IMAGE_FULL="192.168.91.164/rouyi-biz/yudao-server:${TAG}"

# 前置校验Jar文件是否存在
if [ ! -f "./${JAR_NAME}" ]; then
echo "错误:当前目录未找到文件 ${JAR_NAME}"
exit 2
fi
echo "✅ 校验通过,Jar包:${JAR_NAME}"

# 构建镜像
echo "🔨 开始构建镜像 ${IMAGE_FULL}"
docker build \
--build-arg JAR_TAG="${TAG}" \
-t "${IMAGE_FULL}" \
.

# 判断构建结果,成功则推送镜像
if [ $? -eq 0 ]; then
echo "📤 构建成功,推送镜像到私有仓库..."
docker push "${IMAGE_FULL}"
echo "✅ 镜像推送完成:${IMAGE_FULL}"
else
echo "❌ 镜像构建失败,终止流程"
exit 3
fi

2biz-save.sh

#!/bin/bash
# 传入版本号参数导出yudao-server镜像tar包

# 校验入参数量
if [ $# -ne 1 ]; then
echo "使用方式:$0 版本号"
echo "示例:$0 20260731"
echo "作用:导出镜像 192.168.91.164/rouyi-biz/yudao-server:传入版本号 为tar文件"
exit 1
fi

# 接收版本TAG
TAG="$1"
IMAGE_NAME="192.168.91.164/rouyi-biz/yudao-server:${TAG}"
TAR_FILE="yudao-server${TAG}.tar"

# 校验本地镜像是否存在
if ! docker images --format "{{.Repository}}:{{.Tag}}" | grep -x "${IMAGE_NAME}" >/dev/null 2>&1; then
echo "× 本地未找到镜像 ${IMAGE_NAME},无法导出"
exit 2
fi

echo "▶ 开始导出镜像:${IMAGE_NAME}"
echo "▶ 导出文件名称:${TAR_FILE}"
docker save -o "${TAR_FILE}" "${IMAGE_NAME}"

# 判断导出结果
if [ $? -eq 0 ]; then
echo "√ 镜像导出成功!文件:${TAR_FILE}"
# 打印文件大小
ls -lh "${TAR_FILE}"
else
echo "× 镜像导出失败"
exit 3
fi

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

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

# 变量配置
TAG="$1"
TAR_FILE="yudao-server${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} 不存在,请先执行docker save导出镜像!"
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-server镜像列表做校验
echo "[3/3] 校验${node}已导入镜像:"
sshpass -p ${SSH_PASSWORD} ssh root@${node} "docker images | grep yudao-server"
done

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

Dockerfile

## 基础镜像
FROM eclipse-temurin:25-jre

# 定义构建时参数:JAR_TAG,兜底默认值防止不传参报错
ARG JAR_TAG=20260718

## 创建工作目录
RUN mkdir -p /yudao-server
WORKDIR /yudao-server

## 关键修改:直接复制当前目录下的完整jar文件名
## COPY ./yudao-server20260718.jar app.jar

# 动态拼接完整jar文件名
COPY ./yudao-server${JAR_TAG}.jar app.jar


## 时区、JVM参数不变
ENV TZ=Asia/Shanghai
ENV JAVA_OPTS="-Xms512m -Xmx512m -Djava.security.egd=file:/dev/./urandom"
ENV ARGS=""

## 暴露端口
EXPOSE 48080

## 启动命令
ENTRYPOINT ["sh","-c","java $JAVA_OPTS -jar app.jar $ARGS"]