Dict.CN 在线词典, 英语学习, 在线翻译 ------------- MyGitee My腾云code My51cto

Happy_EveryDay

可以平凡 不可以平庸 无爱则无忧,无欲则无求,无怒而无敌,无怨才是佛。所有烦恼,都是放不下的执著 开源技群 328035181 MyGitee

博客园 首页 新随笔 管理

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

 

posted on 2026-07-31 16:13  2026cn  阅读(4)  评论(0)    收藏  举报