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

推荐订阅源

J
Java Code Geeks
月光博客
月光博客
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
F
Fortinet All Blogs
T
The Blog of Author Tim Ferriss
Stack Overflow Blog
Stack Overflow Blog
Blog — PlanetScale
Blog — PlanetScale
aimingoo的专栏
aimingoo的专栏
U
Unit 42
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MyScale Blog
MyScale Blog
T
Tailwind CSS Blog
N
Netflix TechBlog - Medium
B
Blog
博客园_首页
G
Google Developers Blog
Recent Announcements
Recent Announcements
博客园 - 【当耐特】
P
Proofpoint News Feed
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
MongoDB | Blog
MongoDB | Blog
Last Week in AI
Last Week in AI

博客园 - cn2025

K8s -sentinel-dashboard【nacos版本】集 20260815 kubeSphere【ks-controller-manager-webhook-cert】证书 20260814 K8s -nacos集 20260813 K8s - 安装部署redis集群-哨兵sentinels集(支持从K8s外部访问)20260812 k8s-deployment发布测试(pv-pvc-deployment-service) 20260810 K8s - 安装部署Kafka、Zookeeper集群教程(支持从K8s外部访问)20260808 k8s-关机及启动脚本工具 【kubeSphere发布ruoyi-pro前端】工具脚本20260731 【k8s】 etcd服务端及客户端版本及快照【定时】备份 20260730 harbor【https启用】及k8节点部证书20260728 kube-flannel.yml k8s集群-安装helm 【kubeShpere】 官网 20260710 kubesphere-KDP 工具脚本【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
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"]