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

推荐订阅源

J
Java Code Geeks
美团技术团队
Recent Announcements
Recent Announcements
B
Blog
GbyAI
GbyAI
雷峰网
雷峰网
博客园_首页
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Tailwind CSS Blog
M
MIT News - Artificial intelligence
V
V2EX
人人都是产品经理
人人都是产品经理
爱范儿
爱范儿
L
LangChain Blog
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
A
About on SuperTechFans
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
U
Unit 42
Hugging Face - Blog
Hugging Face - Blog
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
Last Week in AI
Last Week in AI
aimingoo的专栏
aimingoo的专栏

博客园 - 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-关机及启动脚本工具 【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-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
【kubeSphere发布ruoyi-pro前端】工具脚本20260731
2026cn · 2026-07-31 · via 博客园 - cn2025

1、ruoyi-web端端打包dist并上传到master节点主机

上传到master节点【192.168.91.166/home/web/】目录下
注:master:166,home/web/为后端dist-prod打包镜像使用
比如版本号202607311620

1.1、npm run build:prod打包dist-prod

image

image

1.2、dist-prod上传到master节点【192.168.91.166/home/web/dist】目录下

image

 1.3、hbuilderx-bash  免登录

###Bash 执行生成密钥

ssh-keygen -t rsa

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

image

 ####公钥到master-166节点:

ssh-copy-id root@192.168.91.166

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

 1.4、打包dist-prod上传到master节点【192.168.91.166/home/web】目录下

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

chmod +x build_upload.sh

./build_upload.sh

image

image

2、dist 构成镜像并推送到私库192.168.91.164:harbor

######master节点【192.168.91.166/home/web】执行构成镜像并上传到私库192.168.91.164:harbor

2.1 DockerFile 文件内容如下

 

# 基础Nginx镜像
FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/u-sb/nginx:latest

# 1. 全局定义构建参数VERSION,构建时传入,默认兜底dist兼容旧流程
# FROM内部重新声明AR

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;"]


2.2  nginx.conf文件内容如下

image

2.3  本地构成镜像docker build -t yudao-web:202607311003 .

docker build -t yudao-web:202607311003 .

 ###授权执行权限chmod +x 1web-build.sh

####执行构成镜像脚本1biz-build.sh

 ./1web-build.sh 202607311620

#####参数为web的yudao-web202607311620的版本号

image

2.4  镜像推送到私库192.168.91.164:harbor

#先打上 Harbor 仓库标签

 docker tag yudao-web:202607311003 192.168.91.164/rouyi-biz/yudao-web:202607311003

 # 推送harbor

docker push 192.168.91.164/rouyi-biz/yudao-web:202607311003

赋予执行权限 chmod +x 2web-pull.sh

./2web-pull.sh 202607311620

#####参数为web的202607311620的版本号

image

3、kubeSphere 的yaml文件的image:版本更新

image

image

image

旧版本:202607311003

新版本:202607311620

4、build_upload.sh及1web-build.sh及2web-pull.sh脚本及readme内容

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.166 "mkdir -p ${REMOTE_DIR}"

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

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

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

 1web-build.sh脚本

#!/bin/bash
# 使用示例: ./1web-build.sh 202607311620

if [ $# -ne 1 ];then
echo "✖ 参数错误!正确用法:$0 版本数字"
echo "示例:$0 202607311620"
exit 1
fi

VERSION="$1"
IMAGE_TAG="yudao-web:${VERSION}"
RES_DIR="./yudao-web${VERSION}"

echo "======================================"
echo "资源目录:${RES_DIR}"
echo "镜像标签:${IMAGE_TAG}"
echo "传递构建参数 VERSION=${VERSION}"
echo "======================================"

if [ ! -d "${RES_DIR}" ];then
echo "✖ 错误:目录【${RES_DIR}】不存在!"
exit 1
fi

echo "开始构建镜像..."
docker build --build-arg VERSION=${VERSION} -t "${IMAGE_TAG}" .

if [ $? -eq 0 ];then
echo -e "\n☑ 镜像构建成功:${IMAGE_TAG}"
else
echo -e "\n✖ 镜像构建失败!"
exit 1
fi

2web-pull.sh脚本

#!/bin/bash
# 使用方式: ./2web-pull.sh 202607311620

if [ $# -ne 1 ];then
echo "❌ 参数错误!使用示例:$0 202607311620"
exit 1
fi

VERSION="$1"
LOCAL_IMG="yudao-web:${VERSION}"
HARBOR_IMG="192.168.91.164/rouyi-biz/yudao-web:${VERSION}"

echo "============================================="
echo "本地镜像:${LOCAL_IMG}"
echo "Harbor目标镜像:${HARBOR_IMG}"
echo "============================================="

# 改用docker images精确匹配,规避inspect偶发异常
if ! docker images --format '{{.Repository}}:{{.Tag}}' | grep "^${LOCAL_IMG}$" >/dev/null 2>&1;then
echo "❌ 错误:本地镜像 ${LOCAL_IMG} 不存在,无法推送!"
exit 1
fi

echo "▶ 执行打标签 docker tag ..."
docker tag "${LOCAL_IMG}" "${HARBOR_IMG}"
if [ $? -ne 0 ];then
echo "❌ 镜像打标签失败!"
exit 1
fi

echo "▶ 执行推送 docker push ..."
docker push "${HARBOR_IMG}"
if [ $? -eq 0 ];then
echo -e "\n✅ 推送成功!${HARBOR_IMG}"
else
echo -e "\n❌ 推送失败!检查Harbor登录、网络连通性"
exit 1
fi

else
echo -e "\n❌ 推送失败!检查Harbor地址、登录状态、项目权限"
exit 1
fi