初始化 RuoYi-Cloud 主仓库
- 配置 Git Submodules 架构 - 添加 14 个子模块仓库 - 配置 .gitignore 排除构建产物和运行时数据 - 添加项目文档和配置文件
This commit is contained in:
commit
9fbee987ab
|
|
@ -0,0 +1 @@
|
|||
custom: http://doc.ruoyi.vip/ruoyi-cloud/other/donate.html
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
######################################################################
|
||||
# Build Tools
|
||||
|
||||
.gradle
|
||||
/build/
|
||||
!gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
target/
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
|
||||
######################################################################
|
||||
# IDE
|
||||
|
||||
### STS ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
|
||||
### JRebel ###
|
||||
rebel.xml
|
||||
### NetBeans ###
|
||||
nbproject/private/
|
||||
build/*
|
||||
nbbuild/
|
||||
dist/
|
||||
nbdist/
|
||||
.nb-gradle/
|
||||
|
||||
######################################################################
|
||||
# Others
|
||||
*.log
|
||||
*.xml.versionsBackup
|
||||
*.swp
|
||||
|
||||
!*/build/*.java
|
||||
!*/build/*.html
|
||||
!*/build/*.xml
|
||||
|
||||
######################################################################
|
||||
# Docker & Runtime Data
|
||||
docker/mysql/data/
|
||||
docker/mysql/db/*.sql
|
||||
docker/nacos/logs/
|
||||
docker/redis/data/
|
||||
*.jar
|
||||
!gradle/wrapper/gradle-wrapper.jar
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
|
||||
# K8s generated files
|
||||
k8s/**/secrets/
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
[submodule "ruoyi-gateway"]
|
||||
path = ruoyi-gateway
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-ruoyi-gateway.git
|
||||
[submodule "ruoyi-ui"]
|
||||
path = ruoyi-ui
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-ruoyi-ui.git
|
||||
[submodule "ruoyi-auth"]
|
||||
path = ruoyi-auth
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-ruoyi-auth.git
|
||||
[submodule "ruoyi-visual/ruoyi-monitor"]
|
||||
path = ruoyi-visual/ruoyi-monitor
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-ruoyi-visual.git
|
||||
[submodule "ruoyi-modules/ruoyi-file"]
|
||||
path = ruoyi-modules/ruoyi-file
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-ruoyi-file.git
|
||||
[submodule "ruoyi-modules/ruoyi-gen"]
|
||||
path = ruoyi-modules/ruoyi-gen
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-ruoyi-gen.git
|
||||
[submodule "ruoyi-modules/ruoyi-job"]
|
||||
path = ruoyi-modules/ruoyi-job
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-ruoyi-job.git
|
||||
[submodule "ruoyi-modules/ruoyi-system"]
|
||||
path = ruoyi-modules/ruoyi-system
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-ruoyi-system.git
|
||||
[submodule "ruoyi-modules/tuoheng-airline"]
|
||||
path = ruoyi-modules/tuoheng-airline
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-tuoheng-airline.git
|
||||
[submodule "ruoyi-modules/tuoheng-approval"]
|
||||
path = ruoyi-modules/tuoheng-approval
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-tuoheng-approval.git
|
||||
[submodule "ruoyi-modules/tuoheng-device"]
|
||||
path = ruoyi-modules/tuoheng-device
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-tuoheng-device.git
|
||||
[submodule "ruoyi-modules/tuoheng-fms"]
|
||||
path = ruoyi-modules/tuoheng-fms
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-tuoheng-fms.git
|
||||
[submodule "ruoyi-modules/tuoheng-media"]
|
||||
path = ruoyi-modules/tuoheng-media
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-tuoheng-media.git
|
||||
[submodule "ruoyi-modules/tuoheng-task"]
|
||||
path = ruoyi-modules/tuoheng-task
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-tuoheng-task.git
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
[submodule "ruoyi-gateway"]
|
||||
path = ruoyi-gateway
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-ruoyi-gateway.git
|
||||
[submodule "ruoyi-ui"]
|
||||
path = ruoyi-ui
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-ruoyi-ui.git
|
||||
[submodule "ruoyi-auth"]
|
||||
path = ruoyi-auth
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-ruoyi-auth.git
|
||||
[submodule "ruoyi-visual/ruoyi-monitor"]
|
||||
path = ruoyi-visual/ruoyi-monitor
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-ruoyi-visual.git
|
||||
[submodule "ruoyi-modules/ruoyi-file"]
|
||||
path = ruoyi-modules/ruoyi-file
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-ruoyi-file.git
|
||||
[submodule "ruoyi-modules/ruoyi-gen"]
|
||||
path = ruoyi-modules/ruoyi-gen
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-ruoyi-gen.git
|
||||
[submodule "ruoyi-modules/ruoyi-job"]
|
||||
path = ruoyi-modules/ruoyi-job
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-ruoyi-job.git
|
||||
[submodule "ruoyi-modules/ruoyi-system"]
|
||||
path = ruoyi-modules/ruoyi-system
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-ruoyi-system.git
|
||||
[submodule "ruoyi-modules/tuoheng-airline"]
|
||||
path = ruoyi-modules/tuoheng-airline
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-tuoheng-airline.git
|
||||
[submodule "ruoyi-modules/tuoheng-approval"]
|
||||
path = ruoyi-modules/tuoheng-approval
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-tuoheng-approval.git
|
||||
[submodule "ruoyi-modules/tuoheng-device"]
|
||||
path = ruoyi-modules/tuoheng-device
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-tuoheng-device.git
|
||||
[submodule "ruoyi-modules/tuoheng-fms"]
|
||||
path = ruoyi-modules/tuoheng-fms
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-tuoheng-fms.git
|
||||
[submodule "ruoyi-modules/tuoheng-media"]
|
||||
path = ruoyi-modules/tuoheng-media
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-tuoheng-media.git
|
||||
[submodule "ruoyi-modules/tuoheng-task"]
|
||||
path = ruoyi-modules/tuoheng-task
|
||||
url = http://th.local.t-aaron.com:13000/THENG/a-tuoheng-task.git
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2020 若依
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
|
@ -0,0 +1,129 @@
|
|||
<p align="center">
|
||||
<img alt="logo" src="https://oscimg.oschina.net/oscnet/up-b99b286755aef70355a7084753f89cdb7c9.png">
|
||||
</p>
|
||||
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">RuoYi v3.6.7</h1>
|
||||
<h4 align="center">基于 Vue/Element UI 和 Spring Boot/Spring Cloud & Alibaba 前后端分离的分布式微服务架构</h4>
|
||||
<p align="center">
|
||||
<a href="https://gitee.com/y_project/RuoYi-Cloud/stargazers"><img src="https://gitee.com/y_project/RuoYi-Cloud/badge/star.svg?theme=dark"></a>
|
||||
<a href="https://gitee.com/y_project/RuoYi-Cloud"><img src="https://img.shields.io/badge/RuoYi-v3.6.7-brightgreen.svg"></a>
|
||||
<a href="https://gitee.com/y_project/RuoYi-Cloud/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a>
|
||||
</p>
|
||||
|
||||
## 平台简介
|
||||
|
||||
若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。
|
||||
|
||||
* 采用前后端分离的模式,微服务版本前端(基于 [RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue))。
|
||||
* 后端采用Spring Boot、Spring Cloud & Alibaba。
|
||||
* 注册中心、配置中心选型Nacos,权限认证使用Redis。
|
||||
* 流量控制框架选型Sentinel,分布式事务选型Seata。
|
||||
* 提供了技术栈([Vue3](https://v3.cn.vuejs.org) [Element Plus](https://element-plus.org/zh-CN) [Vite](https://cn.vitejs.dev))版本[RuoYi-Cloud-Vue3](https://gitcode.com/yangzongzhuan/RuoYi-Cloud-Vue3),保持同步更新。
|
||||
* 如需不分离应用,请移步 [RuoYi](https://gitee.com/y_project/RuoYi),如需分离应用,请移步 [RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue)
|
||||
* 阿里云优惠券:[点我进入](http://aly.ruoyi.vip),腾讯云优惠券:[点我进入](http://txy.ruoyi.vip)
|
||||
|
||||
## 系统模块
|
||||
|
||||
~~~
|
||||
com.ruoyi
|
||||
├── ruoyi-ui // 前端框架 [80]
|
||||
├── ruoyi-gateway // 网关模块 [8080]
|
||||
├── ruoyi-auth // 认证中心 [9200]
|
||||
├── ruoyi-api // 接口模块
|
||||
│ └── ruoyi-api-system // 系统接口
|
||||
├── ruoyi-common // 通用模块
|
||||
│ └── ruoyi-common-core // 核心模块
|
||||
│ └── ruoyi-common-datascope // 权限范围
|
||||
│ └── ruoyi-common-datasource // 多数据源
|
||||
│ └── ruoyi-common-log // 日志记录
|
||||
│ └── ruoyi-common-redis // 缓存服务
|
||||
│ └── ruoyi-common-seata // 分布式事务
|
||||
│ └── ruoyi-common-security // 安全模块
|
||||
│ └── ruoyi-common-sensitive // 数据脱敏
|
||||
│ └── ruoyi-common-swagger // 系统接口
|
||||
├── ruoyi-modules // 业务模块
|
||||
│ └── ruoyi-system // 系统模块 [9201]
|
||||
│ └── ruoyi-gen // 代码生成 [9202]
|
||||
│ └── ruoyi-job // 定时任务 [9203]
|
||||
│ └── ruoyi-file // 文件服务 [9300]
|
||||
├── ruoyi-visual // 图形化管理模块
|
||||
│ └── ruoyi-visual-monitor // 监控中心 [9100]
|
||||
├──pom.xml // 公共依赖
|
||||
~~~
|
||||
|
||||
## 架构图
|
||||
|
||||
<img src="https://oscimg.oschina.net/oscnet/up-82e9722ecb846786405a904bafcf19f73f3.png"/>
|
||||
|
||||
## 内置功能
|
||||
|
||||
1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
|
||||
2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
|
||||
3. 岗位管理:配置系统用户所属担任职务。
|
||||
4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
|
||||
5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
|
||||
6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
|
||||
7. 参数管理:对系统动态配置常用参数。
|
||||
8. 通知公告:系统通知公告信息发布维护。
|
||||
9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
|
||||
10. 登录日志:系统登录日志记录查询包含登录异常。
|
||||
11. 在线用户:当前系统中活跃用户状态监控。
|
||||
12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
|
||||
13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
|
||||
14. 系统接口:根据业务代码自动生成相关的api接口文档。
|
||||
15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
|
||||
16. 在线构建器:拖动表单元素生成相应的HTML代码。
|
||||
17. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
|
||||
|
||||
## 在线体验
|
||||
|
||||
- admin/admin123
|
||||
- 陆陆续续收到一些打赏,为了更好的体验已用于演示服务器升级。谢谢各位小伙伴。
|
||||
|
||||
演示地址:http://ruoyi.vip
|
||||
文档地址:http://doc.ruoyi.vip
|
||||
|
||||
## 演示图
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/cd1f90be5f2684f4560c9519c0f2a232ee8.jpg"/></td>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/1cbcf0e6f257c7d3a063c0e3f2ff989e4b3.jpg"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/up-8074972883b5ba0622e13246738ebba237a.png"/></td>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/up-9f88719cdfca9af2e58b352a20e23d43b12.png"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/up-39bf2584ec3a529b0d5a3b70d15c9b37646.png"/></td>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/up-4148b24f58660a9dc347761e4cf6162f28f.png"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/up-b2d62ceb95d2dd9b3fbe157bb70d26001e9.png"/></td>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/up-d67451d308b7a79ad6819723396f7c3d77a.png"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/5e8c387724954459291aafd5eb52b456f53.jpg"/></td>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/644e78da53c2e92a95dfda4f76e6d117c4b.jpg"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/up-8370a0d02977eebf6dbf854c8450293c937.png"/></td>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/up-49003ed83f60f633e7153609a53a2b644f7.png"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/up-d4fe726319ece268d4746602c39cffc0621.png"/></td>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/up-c195234bbcd30be6927f037a6755e6ab69c.png"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/up-ece3fd37a3d4bb75a3926e905a3c5629055.png"/></td>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/up-92ffb7f3835855cff100fa0f754a6be0d99.png"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/up-ff9e3066561574aca73005c5730c6a41f15.png"/></td>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/up-5e4daac0bb59612c5038448acbcef235e3a.png"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
## 若依微服务交流群
|
||||
|
||||
QQ群: [](https://jq.qq.com/?_wv=1027&k=yqInfq0S) [](https://jq.qq.com/?_wv=1027&k=Oy1mb3p8) [](https://jq.qq.com/?_wv=1027&k=rvxkJtXK) [](https://jq.qq.com/?_wv=1027&k=0Ck3PvTe) [](https://jq.qq.com/?_wv=1027&k=FnHHP4TT) [](https://jq.qq.com/?_wv=1027&k=qdT1Ojpz) [](https://jq.qq.com/?_wv=1027&k=nw3OiyXs) [](https://jq.qq.com/?_wv=1027&k=kiU5WDls) [](https://jq.qq.com/?_wv=1027&k=MtBy6YfT) [](https://jq.qq.com/?_wv=1027&k=FqImHgH2) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=G4jZ4EtdT50PhnMBudTnEwgonxkXOscJ&authKey=FkGHYfoTKlGE6wHdKdjH9bVoOgQjtLP9WM%2Fj7pqGY1msoqw9uxDiBo39E2mLgzYg&noverify=0&group_code=128355254) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=irnwcXhbLOQEv1g-TwGifjNTA_f4wZiA&authKey=4bpzEwhcUY%2FvsPDHvzYn6xfoS%2FtOArvZ%2BGXzfr7O0%2FEqLfkKA%2BuCDXlzHIFg8t93&noverify=0&group_code=179219821) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=lx1uEdEDuxeM7rUvF3qmlFdqKqdJ5Z-R&authKey=rgyPW9yhhh4IIURKVFa6NgP3qiqH04WAzrJ0trsgkr3pjzm6sKIOGyA58oOjoj%2FJ&noverify=0&group_code=158753145) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Kuaw0Xdlw2Nlgn6s8h9elzuquHGxGObD&authKey=cSrQcWQ%2BzQZAFFrwxaR%2BbzcumX4WRduZnd1O6JO1dlclQMiu%2BKwxAy8t2JfNp67V&noverify=0&group_code=112869560) 点击按钮入群。
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
@echo off
|
||||
echo.
|
||||
echo [信息] 清理工程target生成路径。
|
||||
echo.
|
||||
|
||||
%~d0
|
||||
cd %~dp0
|
||||
|
||||
cd ..
|
||||
call mvn clean
|
||||
|
||||
pause
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
#!/bin/bash
|
||||
|
||||
echo ""
|
||||
echo "[信息] 清理所有target文件夹"
|
||||
echo ""
|
||||
|
||||
# 切换到脚本所在目录
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
# 返回上级目录
|
||||
cd ..
|
||||
|
||||
# 执行 Maven 清理
|
||||
mvn clean
|
||||
|
||||
echo ""
|
||||
echo "[信息] 清理 Docker 相关文件"
|
||||
echo ""
|
||||
|
||||
# 清理 docker/mysql/data 文件夹下的内容
|
||||
if [ -d "docker/mysql/data" ]; then
|
||||
echo "清理 docker/mysql/data 文件夹..."
|
||||
rm -rf docker/mysql/data/*
|
||||
echo "docker/mysql/data 清理完成"
|
||||
fi
|
||||
|
||||
# 清理 docker/nacos/logs 文件夹下的内容
|
||||
if [ -d "docker/nacos/logs" ]; then
|
||||
echo "清理 docker/nacos/logs 文件夹..."
|
||||
rm -rf docker/nacos/logs/*
|
||||
echo "docker/nacos/logs 清理完成"
|
||||
fi
|
||||
|
||||
# 清理 docker/mysql/db 文件夹下的 .sql 文件
|
||||
if [ -d "docker/mysql/db" ]; then
|
||||
echo "清理 docker/mysql/db 文件夹下的 .sql 文件..."
|
||||
rm -f docker/mysql/db/*.sql
|
||||
echo "docker/mysql/db/*.sql 清理完成"
|
||||
fi
|
||||
|
||||
# 清理 docker/nginx/html/dist 文件夹下的内容
|
||||
if [ -d "docker/nginx/html/dist" ]; then
|
||||
echo "清理 docker/nginx/html/dist 文件夹..."
|
||||
rm -rf docker/nginx/html/dist/*
|
||||
echo "docker/nginx/html/dist 清理完成"
|
||||
fi
|
||||
|
||||
# 清理 docker 目录下的所有 .jar 文件
|
||||
if [ -d "docker" ]; then
|
||||
echo "清理 docker 目录下的所有 .jar 文件..."
|
||||
find docker -name "*.jar" -type f -delete
|
||||
echo "docker 目录下的 .jar 文件清理完成"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "[信息] 所有清理任务完成"
|
||||
echo ""
|
||||
echo "按任意键继续..."
|
||||
read -n 1 -s -r
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
@echo off
|
||||
echo.
|
||||
echo [信息] 打包Web工程,生成war/jar包文件。
|
||||
echo.
|
||||
|
||||
%~d0
|
||||
cd %~dp0
|
||||
|
||||
cd ..
|
||||
call mvn clean package -Dmaven.test.skip=true
|
||||
|
||||
pause
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
#!/bin/bash
|
||||
|
||||
echo ""
|
||||
echo "[信息] 打包Web工程,生成war/jar包文件"
|
||||
echo ""
|
||||
|
||||
# 切换到脚本所在目录
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
# 返回上级目录
|
||||
cd ..
|
||||
|
||||
# 执行 Maven 打包,跳过测试
|
||||
mvn clean package -Dmaven.test.skip=true
|
||||
|
||||
#echo ""
|
||||
echo "按任意键继续..."
|
||||
#read -n 1 -s -r
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
@echo off
|
||||
echo.
|
||||
echo [信息] 使用Jar命令运行Auth工程。
|
||||
echo.
|
||||
|
||||
cd %~dp0
|
||||
cd ../ruoyi-auth/target
|
||||
|
||||
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
|
||||
|
||||
java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar ruoyi-auth.jar
|
||||
|
||||
cd bin
|
||||
pause
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
@echo off
|
||||
echo.
|
||||
echo [信息] 使用Jar命令运行Gateway工程。
|
||||
echo.
|
||||
|
||||
cd %~dp0
|
||||
cd ../ruoyi-gateway/target
|
||||
|
||||
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
|
||||
|
||||
java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar ruoyi-gateway.jar
|
||||
|
||||
cd bin
|
||||
pause
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
@echo off
|
||||
echo.
|
||||
echo [信息] 使用Jar命令运行Modules-File工程。
|
||||
echo.
|
||||
|
||||
cd %~dp0
|
||||
cd ../ruoyi-modules/ruoyi-file/target
|
||||
|
||||
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
|
||||
|
||||
java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar ruoyi-modules-file.jar
|
||||
|
||||
cd bin
|
||||
pause
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
@echo off
|
||||
echo.
|
||||
echo [信息] 使用Jar命令运行Modules-Gen工程。
|
||||
echo.
|
||||
|
||||
cd %~dp0
|
||||
cd ../ruoyi-modules/ruoyi-gen/target
|
||||
|
||||
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
|
||||
|
||||
java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar ruoyi-modules-gen.jar
|
||||
|
||||
cd bin
|
||||
pause
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
@echo off
|
||||
echo.
|
||||
echo [信息] 使用Jar命令运行Modules-Job工程。
|
||||
echo.
|
||||
|
||||
cd %~dp0
|
||||
cd ../ruoyi-modules/ruoyi-job/target
|
||||
|
||||
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
|
||||
|
||||
java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar ruoyi-modules-job.jar
|
||||
|
||||
cd bin
|
||||
pause
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
@echo off
|
||||
echo.
|
||||
echo [信息] 使用Jar命令运行Modules-System工程。
|
||||
echo.
|
||||
|
||||
cd %~dp0
|
||||
cd ../ruoyi-modules/ruoyi-system/target
|
||||
|
||||
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
|
||||
|
||||
java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar ruoyi-modules-system.jar
|
||||
|
||||
cd bin
|
||||
pause
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
@echo off
|
||||
echo.
|
||||
echo [信息] 使用Jar命令运行Monitor工程。
|
||||
echo.
|
||||
|
||||
cd %~dp0
|
||||
cd ../ruoyi-visual/ruoyi-monitor/target
|
||||
|
||||
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
|
||||
|
||||
java -Dfile.encoding=utf-8 %JAVA_OPTS% -jar ruoyi-visual-monitor.jar
|
||||
|
||||
cd bin
|
||||
pause
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/sh
|
||||
|
||||
# 清理 docker 目录下的所有 jar 文件
|
||||
echo "开始清理 docker 目录下的所有 jar 文件..."
|
||||
|
||||
# 查找并删除所有 jar 文件
|
||||
find . -name "*.jar" -type f -delete
|
||||
|
||||
echo "清理完成!"
|
||||
echo "已删除所有 jar 文件"
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
#!/bin/sh
|
||||
|
||||
# 复制项目的文件到对应docker路径,便于一键生成镜像。
|
||||
usage() {
|
||||
echo "Usage: sh copy.sh"
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
# copy sql
|
||||
echo "begin copy sql "
|
||||
cp ../sql/ry_20250523.sql ./mysql/db
|
||||
cp ../sql/ry_config_20250902.sql ./mysql/db
|
||||
|
||||
# copy html
|
||||
echo "begin copy html "
|
||||
cp -r ../ruoyi-ui/dist/** ./nginx/html/dist
|
||||
|
||||
|
||||
# copy jar
|
||||
echo "begin copy ruoyi-gateway "
|
||||
cp ../ruoyi-gateway/target/ruoyi-gateway.jar ./ruoyi/gateway/jar
|
||||
|
||||
echo "begin copy ruoyi-auth "
|
||||
cp ../ruoyi-auth/target/ruoyi-auth.jar ./ruoyi/auth/jar
|
||||
|
||||
echo "begin copy ruoyi-visual "
|
||||
cp ../ruoyi-visual/ruoyi-monitor/target/ruoyi-visual-monitor.jar ./ruoyi/visual/monitor/jar
|
||||
|
||||
echo "begin copy ruoyi-modules-system "
|
||||
cp ../ruoyi-modules/ruoyi-system/target/ruoyi-modules-system.jar ./ruoyi/modules/system/jar
|
||||
|
||||
echo "begin copy ruoyi-modules-file "
|
||||
cp ../ruoyi-modules/ruoyi-file/target/ruoyi-modules-file.jar ./ruoyi/modules/file/jar
|
||||
|
||||
echo "begin copy ruoyi-modules-job "
|
||||
cp ../ruoyi-modules/ruoyi-job/target/ruoyi-modules-job.jar ./ruoyi/modules/job/jar
|
||||
|
||||
echo "begin copy ruoyi-modules-gen "
|
||||
cp ../ruoyi-modules/ruoyi-gen/target/ruoyi-modules-gen.jar ./ruoyi/modules/gen/jar
|
||||
|
||||
echo "begin copy tuoheng-approval "
|
||||
cp ../ruoyi-modules/tuoheng-approval/target/tuoheng-approval.jar ./ruoyi/modules/approval/jar
|
||||
|
||||
echo "begin copy tuoheng-device "
|
||||
cp ../ruoyi-modules/tuoheng-device/target/tuoheng-device.jar ./ruoyi/modules/device/jar
|
||||
|
||||
echo "begin copy tuoheng-airline "
|
||||
cp ../ruoyi-modules/tuoheng-airline/target/tuoheng-airline.jar ./ruoyi/modules/airline/jar
|
||||
|
||||
echo "begin copy tuoheng-task "
|
||||
cp ../ruoyi-modules/tuoheng-task/target/tuoheng-task.jar ./ruoyi/modules/task/jar
|
||||
|
||||
echo "begin copy tuoheng-fms "
|
||||
cp ../ruoyi-modules/tuoheng-fms/target/tuoheng-fms.jar ./ruoyi/modules/fms/jar
|
||||
|
||||
echo "begin copy tuoheng-media "
|
||||
cp ../ruoyi-modules/tuoheng-media/target/tuoheng-media.jar ./ruoyi/modules/media/jar
|
||||
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
#!/bin/sh
|
||||
|
||||
# 使用说明,用来提示输入参数
|
||||
usage() {
|
||||
echo "Usage: sh 执行脚本.sh [port|base|modules|stop|rm]"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# 开启所需端口
|
||||
port(){
|
||||
firewall-cmd --add-port=80/tcp --permanent
|
||||
firewall-cmd --add-port=8080/tcp --permanent
|
||||
firewall-cmd --add-port=8848/tcp --permanent
|
||||
firewall-cmd --add-port=9848/tcp --permanent
|
||||
firewall-cmd --add-port=9849/tcp --permanent
|
||||
firewall-cmd --add-port=6379/tcp --permanent
|
||||
firewall-cmd --add-port=3306/tcp --permanent
|
||||
firewall-cmd --add-port=9100/tcp --permanent
|
||||
firewall-cmd --add-port=9200/tcp --permanent
|
||||
firewall-cmd --add-port=9201/tcp --permanent
|
||||
firewall-cmd --add-port=9202/tcp --permanent
|
||||
firewall-cmd --add-port=9203/tcp --permanent
|
||||
firewall-cmd --add-port=9204/tcp --permanent
|
||||
firewall-cmd --add-port=9205/tcp --permanent
|
||||
firewall-cmd --add-port=9206/tcp --permanent
|
||||
firewall-cmd --add-port=9207/tcp --permanent
|
||||
firewall-cmd --add-port=9208/tcp --permanent
|
||||
firewall-cmd --add-port=9209/tcp --permanent
|
||||
firewall-cmd --add-port=9300/tcp --permanent
|
||||
service firewalld restart
|
||||
}
|
||||
|
||||
# 启动基础环境(必须)
|
||||
docker-compose build --no-cache ruoyi-mysql && docker-compose up -d ruoyi-mysql
|
||||
docker-compose build --no-cache ruoyi-redis && docker-compose up -d ruoyi-redis
|
||||
docker-compose build --no-cache ruoyi-nacos && docker-compose up -d ruoyi-nacos
|
||||
docker-compose build --no-cache ruoyi-gateway && docker-compose up -d ruoyi-gateway
|
||||
docker-compose build --no-cache ruoyi-nginx && docker-compose up -d ruoyi-nginx
|
||||
docker-compose build --no-cache ruoyi-auth && docker-compose up -d ruoyi-auth
|
||||
docker-compose build --no-cache ruoyi-modules-system && docker-compose up -d ruoyi-modules-system
|
||||
docker-compose build --no-cache ruoyi-modules-gen && docker-compose up -d ruoyi-modules-gen
|
||||
docker-compose build --no-cache ruoyi-modules-job && docker-compose up -d ruoyi-modules-job
|
||||
docker-compose build --no-cache ruoyi-modules-file && docker-compose up -d ruoyi-modules-file
|
||||
docker-compose build --no-cache ruoyi-visual-monitor && docker-compose up -d ruoyi-visual-monitor
|
||||
docker-compose build --no-cache tuoheng-modules-approval && docker-compose up -d tuoheng-modules-approval
|
||||
docker-compose build --no-cache tuoheng-modules-device && docker-compose up -d tuoheng-modules-device
|
||||
docker-compose build --no-cache tuoheng-modules-airline && docker-compose up -d tuoheng-modules-airline
|
||||
docker-compose build --no-cache tuoheng-modules-task && docker-compose up -d tuoheng-modules-task
|
||||
docker-compose build --no-cache tuoheng-modules-fms && docker-compose up -d tuoheng-modules-fms
|
||||
docker-compose build --no-cache tuoheng-modules-media && docker-compose up -d tuoheng-modules-media
|
||||
|
||||
# 关闭所有环境/模块
|
||||
stop(){
|
||||
docker-compose stop
|
||||
}
|
||||
|
||||
# 删除所有环境/模块
|
||||
rm(){
|
||||
docker-compose rm
|
||||
docker-compose down
|
||||
}
|
||||
|
||||
# 根据输入参数,选择执行对应方法,不输入则执行使用说明
|
||||
case "$1" in
|
||||
"port")
|
||||
port
|
||||
;;
|
||||
"base")
|
||||
base
|
||||
;;
|
||||
"modules")
|
||||
modules
|
||||
;;
|
||||
"stop")
|
||||
stop
|
||||
;;
|
||||
"rm")
|
||||
rm
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
|
|
@ -0,0 +1,231 @@
|
|||
version : '3.8'
|
||||
services:
|
||||
ruoyi-nacos:
|
||||
container_name: ruoyi-nacos
|
||||
image: nacos-runtime
|
||||
build:
|
||||
context: ./nacos
|
||||
environment:
|
||||
- MODE=standalone
|
||||
volumes:
|
||||
- ./nacos/logs/:/home/nacos/logs
|
||||
- ./nacos/conf/application.properties:/home/nacos/conf/application.properties
|
||||
ports:
|
||||
- "8848:8848"
|
||||
- "9848:9848"
|
||||
- "9849:9849"
|
||||
depends_on:
|
||||
- ruoyi-mysql
|
||||
ruoyi-mysql:
|
||||
container_name: ruoyi-mysql
|
||||
image: mysql-runtime
|
||||
build:
|
||||
context: ./mysql
|
||||
ports:
|
||||
- "3306:3306"
|
||||
volumes:
|
||||
- ./mysql/conf:/etc/mysql/conf.d
|
||||
- ./mysql/logs:/logs
|
||||
- ./mysql/data:/var/lib/mysql
|
||||
command: [
|
||||
'mysqld',
|
||||
'--innodb-buffer-pool-size=80M',
|
||||
'--character-set-server=utf8mb4',
|
||||
'--collation-server=utf8mb4_unicode_ci',
|
||||
'--default-time-zone=+8:00',
|
||||
'--lower-case-table-names=1'
|
||||
]
|
||||
environment:
|
||||
MYSQL_DATABASE: 'ry-cloud'
|
||||
MYSQL_ROOT_PASSWORD: password
|
||||
ruoyi-redis:
|
||||
container_name: ruoyi-redis
|
||||
image: redis-runtime
|
||||
build:
|
||||
context: ./redis
|
||||
ports:
|
||||
- "6379:6379"
|
||||
volumes:
|
||||
- ./redis/conf/redis.conf:/home/ruoyi/redis/redis.conf
|
||||
- ./redis/data:/data
|
||||
command: redis-server /home/ruoyi/redis/redis.conf
|
||||
ruoyi-nginx:
|
||||
container_name: ruoyi-nginx
|
||||
image: nginx-runtime
|
||||
build:
|
||||
context: ./nginx
|
||||
ports:
|
||||
- "80:80"
|
||||
volumes:
|
||||
- ./nginx/html/dist:/home/ruoyi/projects/ruoyi-ui
|
||||
- ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
|
||||
- ./nginx/logs:/var/log/nginx
|
||||
- ./nginx/conf.d:/etc/nginx/conf.d
|
||||
depends_on:
|
||||
- ruoyi-gateway
|
||||
links:
|
||||
- ruoyi-gateway
|
||||
ruoyi-gateway:
|
||||
container_name: ruoyi-gateway
|
||||
image: gateway-runtime
|
||||
build:
|
||||
context: ./ruoyi/gateway
|
||||
dockerfile: dockerfile
|
||||
ports:
|
||||
- "8080:8080"
|
||||
depends_on:
|
||||
- ruoyi-redis
|
||||
links:
|
||||
- ruoyi-redis
|
||||
ruoyi-auth:
|
||||
container_name: ruoyi-auth
|
||||
image: ruoyi-auth-runtime
|
||||
build:
|
||||
context: ./ruoyi/auth
|
||||
dockerfile: dockerfile
|
||||
ports:
|
||||
- "9200:9200"
|
||||
depends_on:
|
||||
- ruoyi-redis
|
||||
links:
|
||||
- ruoyi-redis
|
||||
ruoyi-modules-system:
|
||||
container_name: ruoyi-modules-system
|
||||
image: ruoyi-modules-system-runtime
|
||||
build:
|
||||
context: ./ruoyi/modules/system
|
||||
dockerfile: dockerfile
|
||||
ports:
|
||||
- "9201:9201"
|
||||
depends_on:
|
||||
- ruoyi-redis
|
||||
- ruoyi-mysql
|
||||
links:
|
||||
- ruoyi-redis
|
||||
- ruoyi-mysql
|
||||
ruoyi-modules-gen:
|
||||
container_name: ruoyi-modules-gen
|
||||
image: ruoyi-modules-gen-runtime
|
||||
build:
|
||||
context: ./ruoyi/modules/gen
|
||||
dockerfile: dockerfile
|
||||
ports:
|
||||
- "9202:9202"
|
||||
depends_on:
|
||||
- ruoyi-mysql
|
||||
links:
|
||||
- ruoyi-mysql
|
||||
ruoyi-modules-job:
|
||||
container_name: ruoyi-modules-job
|
||||
image: ruoyi-modules-job-runtime
|
||||
build:
|
||||
context: ./ruoyi/modules/job
|
||||
dockerfile: dockerfile
|
||||
ports:
|
||||
- "9203:9203"
|
||||
depends_on:
|
||||
- ruoyi-mysql
|
||||
links:
|
||||
- ruoyi-mysql
|
||||
ruoyi-modules-file:
|
||||
container_name: ruoyi-modules-file
|
||||
image: ruoyi-modules-file-runtime
|
||||
build:
|
||||
context: ./ruoyi/modules/file
|
||||
dockerfile: dockerfile
|
||||
ports:
|
||||
- "9300:9300"
|
||||
volumes:
|
||||
- ./ruoyi/uploadPath:/home/ruoyi/uploadPath
|
||||
ruoyi-visual-monitor:
|
||||
container_name: ruoyi-visual-monitor
|
||||
image: ruoyi-visual-monitor-runtime
|
||||
build:
|
||||
context: ./ruoyi/visual/monitor
|
||||
dockerfile: dockerfile
|
||||
ports:
|
||||
- "9100:9100"
|
||||
tuoheng-modules-approval:
|
||||
container_name: tuoheng-modules-approval
|
||||
image: tuoheng-modules-approval-runtime
|
||||
build:
|
||||
context: ./ruoyi/modules/approval
|
||||
dockerfile: dockerfile
|
||||
ports:
|
||||
- "9204:9201"
|
||||
depends_on:
|
||||
- ruoyi-redis
|
||||
- ruoyi-mysql
|
||||
links:
|
||||
- ruoyi-redis
|
||||
- ruoyi-mysql
|
||||
tuoheng-modules-device:
|
||||
container_name: tuoheng-modules-device
|
||||
image: tuoheng-modules-device-runtime
|
||||
build:
|
||||
context: ./ruoyi/modules/device
|
||||
dockerfile: dockerfile
|
||||
ports:
|
||||
- "9205:9201"
|
||||
depends_on:
|
||||
- ruoyi-redis
|
||||
- ruoyi-mysql
|
||||
links:
|
||||
- ruoyi-redis
|
||||
- ruoyi-mysql
|
||||
tuoheng-modules-airline:
|
||||
container_name: tuoheng-modules-airline
|
||||
image: tuoheng-modules-airline-runtime
|
||||
build:
|
||||
context: ./ruoyi/modules/airline
|
||||
dockerfile: dockerfile
|
||||
ports:
|
||||
- "9206:9201"
|
||||
depends_on:
|
||||
- ruoyi-redis
|
||||
- ruoyi-mysql
|
||||
links:
|
||||
- ruoyi-redis
|
||||
- ruoyi-mysql
|
||||
tuoheng-modules-task:
|
||||
container_name: tuoheng-modules-task
|
||||
image: tuoheng-modules-task-runtime
|
||||
build:
|
||||
context: ./ruoyi/modules/task
|
||||
dockerfile: dockerfile
|
||||
ports:
|
||||
- "9207:9201"
|
||||
depends_on:
|
||||
- ruoyi-redis
|
||||
- ruoyi-mysql
|
||||
links:
|
||||
- ruoyi-redis
|
||||
- ruoyi-mysql
|
||||
tuoheng-modules-fms:
|
||||
container_name: tuoheng-modules-fms
|
||||
image: tuoheng-modules-fms-runtime
|
||||
build:
|
||||
context: ./ruoyi/modules/fms
|
||||
dockerfile: dockerfile
|
||||
ports:
|
||||
- "9208:9201"
|
||||
depends_on:
|
||||
- ruoyi-redis
|
||||
- ruoyi-mysql
|
||||
links:
|
||||
- ruoyi-redis
|
||||
- ruoyi-mysql
|
||||
tuoheng-modules-media:
|
||||
container_name: tuoheng-modules-media
|
||||
image: tuoheng-modules-media-runtime
|
||||
build:
|
||||
context: ./ruoyi/modules/media
|
||||
dockerfile: dockerfile
|
||||
ports:
|
||||
- "9209:9201"
|
||||
depends_on:
|
||||
- ruoyi-redis
|
||||
- ruoyi-mysql
|
||||
links:
|
||||
- ruoyi-redis
|
||||
- ruoyi-mysql
|
||||
|
|
@ -0,0 +1 @@
|
|||
存放sql目录下的所有脚本,用于docker自动执行。
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# 基础镜像
|
||||
FROM registry.t-aaron.com/mysql:8.0
|
||||
# author
|
||||
MAINTAINER ruoyi
|
||||
|
||||
# 执行sql脚本
|
||||
ADD ./db/*.sql /docker-entrypoint-initdb.d/
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
spring.datasource.platform=mysql
|
||||
db.num=1
|
||||
db.url.0=jdbc:mysql://ruoyi-mysql:3306/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
|
||||
db.user=root
|
||||
db.password=password
|
||||
|
||||
nacos.naming.empty-service.auto-clean=true
|
||||
nacos.naming.empty-service.clean.initial-delay-ms=50000
|
||||
nacos.naming.empty-service.clean.period-time-ms=30000
|
||||
|
||||
management.endpoints.web.exposure.include=*
|
||||
|
||||
management.metrics.export.elastic.enabled=false
|
||||
management.metrics.export.influx.enabled=false
|
||||
|
||||
server.tomcat.accesslog.enabled=true
|
||||
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
|
||||
|
||||
server.tomcat.basedir=/home/ruoyi/nacos/tomcat/logs
|
||||
|
||||
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
|
||||
|
||||
nacos.core.auth.system.type=nacos
|
||||
nacos.core.auth.enabled=false
|
||||
nacos.core.auth.default.token.expire.seconds=18000
|
||||
nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
|
||||
nacos.core.auth.caching.enabled=true
|
||||
nacos.core.auth.enable.userAgentAuthWhite=false
|
||||
nacos.core.auth.server.identity.key=serverIdentity
|
||||
nacos.core.auth.server.identity.value=security
|
||||
|
||||
nacos.istio.mcp.server.enabled=false
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
# 基础镜像
|
||||
FROM registry.t-aaron.com/nacos/nacos-server:v2.5.2
|
||||
# author
|
||||
MAINTAINER ruoyi
|
||||
|
||||
# 复制conf文件到路径
|
||||
COPY ./conf/application.properties /home/nacos/conf/application.properties
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
worker_processes 1;
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
include mime.types;
|
||||
default_type application/octet-stream;
|
||||
sendfile on;
|
||||
keepalive_timeout 65;
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name localhost;
|
||||
|
||||
location / {
|
||||
root /home/ruoyi/projects/ruoyi-ui;
|
||||
try_files $uri $uri/ /index.html;
|
||||
index index.html index.htm;
|
||||
}
|
||||
|
||||
location /prod-api/{
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header REMOTE-HOST $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_pass http://ruoyi-gateway:8080/;
|
||||
}
|
||||
|
||||
# 避免actuator暴露
|
||||
if ($uri ~ "/actuator") {
|
||||
return 403;
|
||||
}
|
||||
|
||||
error_page 500 502 503 504 /50x.html;
|
||||
location = /50x.html {
|
||||
root html;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# 基础镜像
|
||||
FROM registry.t-aaron.com/nginx:latest
|
||||
# author
|
||||
MAINTAINER ruoyi
|
||||
|
||||
# 挂载目录
|
||||
VOLUME /home/ruoyi/projects/ruoyi-ui
|
||||
# 创建目录
|
||||
RUN mkdir -p /home/ruoyi/projects/ruoyi-ui
|
||||
# 指定路径
|
||||
WORKDIR /home/ruoyi/projects/ruoyi-ui
|
||||
# 复制conf文件到路径
|
||||
COPY ./conf/nginx.conf /etc/nginx/nginx.conf
|
||||
# 复制html文件到路径
|
||||
COPY ./html/dist /home/ruoyi/projects/ruoyi-ui
|
||||
|
|
@ -0,0 +1 @@
|
|||
# requirepass 123456
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
# 基础镜像
|
||||
FROM registry.t-aaron.com/redis:latest
|
||||
# author
|
||||
MAINTAINER ruoyi
|
||||
|
||||
# 挂载目录
|
||||
VOLUME /home/ruoyi/redis
|
||||
# 创建目录
|
||||
RUN mkdir -p /home/ruoyi/redis
|
||||
# 指定路径
|
||||
WORKDIR /home/ruoyi/redis
|
||||
# 复制conf文件到路径
|
||||
COPY ./conf/redis.conf /home/ruoyi/redis/redis.conf
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# 基础镜像
|
||||
FROM registry.t-aaron.com/eclipse-temurin:21.0.9_10-jre-alpine-3.23
|
||||
# author
|
||||
MAINTAINER ruoyi
|
||||
|
||||
# 挂载目录
|
||||
VOLUME /home/ruoyi
|
||||
# 创建目录
|
||||
RUN mkdir -p /home/ruoyi
|
||||
# 指定路径
|
||||
WORKDIR /home/ruoyi
|
||||
# 复制jar文件到路径
|
||||
COPY ./jar/ruoyi-auth.jar /home/ruoyi/ruoyi-auth.jar
|
||||
# 启动认证服务
|
||||
ENTRYPOINT ["java","-jar","ruoyi-auth.jar"]
|
||||
|
|
@ -0,0 +1 @@
|
|||
存放认证中心打包好的jar文件,用于docker启动应用。
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# 基础镜像
|
||||
FROM registry.t-aaron.com/eclipse-temurin:21.0.9_10-jre-alpine-3.23
|
||||
# author
|
||||
MAINTAINER ruoyi
|
||||
|
||||
# 挂载目录
|
||||
VOLUME /home/ruoyi
|
||||
# 创建目录
|
||||
RUN mkdir -p /home/ruoyi
|
||||
# 指定路径
|
||||
WORKDIR /home/ruoyi
|
||||
# 复制jar文件到路径
|
||||
COPY ./jar/ruoyi-gateway.jar /home/ruoyi/ruoyi-gateway.jar
|
||||
# 启动网关服务
|
||||
ENTRYPOINT ["java","-jar","ruoyi-gateway.jar"]
|
||||
|
|
@ -0,0 +1 @@
|
|||
存放网关模块打包好的jar文件,用于docker启动应用。
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# 基础镜像
|
||||
FROM registry.t-aaron.com/eclipse-temurin:21.0.9_10-jre-alpine-3.23
|
||||
# author
|
||||
MAINTAINER tuoheng
|
||||
|
||||
# 挂载目录
|
||||
VOLUME /home/ruoyi
|
||||
# 创建目录
|
||||
RUN mkdir -p /home/ruoyi
|
||||
# 指定路径
|
||||
WORKDIR /home/ruoyi
|
||||
# 复制jar文件到路径
|
||||
COPY ./jar/tuoheng-airline.jar /home/ruoyi/tuoheng-airline.jar
|
||||
# 启动系统服务
|
||||
ENTRYPOINT ["java","-jar","tuoheng-airline.jar"]
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# 基础镜像
|
||||
FROM registry.t-aaron.com/eclipse-temurin:21.0.9_10-jre-alpine-3.23
|
||||
# author
|
||||
MAINTAINER tuoheng
|
||||
|
||||
# 挂载目录
|
||||
VOLUME /home/ruoyi
|
||||
# 创建目录
|
||||
RUN mkdir -p /home/ruoyi
|
||||
# 指定路径
|
||||
WORKDIR /home/ruoyi
|
||||
# 复制jar文件到路径
|
||||
COPY ./jar/tuoheng-approval.jar /home/ruoyi/tuoheng-approval.jar
|
||||
# 启动系统服务
|
||||
ENTRYPOINT ["java","-jar","tuoheng-approval.jar"]
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# 基础镜像
|
||||
FROM registry.t-aaron.com/eclipse-temurin:21.0.9_10-jre-alpine-3.23
|
||||
# author
|
||||
MAINTAINER tuoheng
|
||||
|
||||
# 挂载目录
|
||||
VOLUME /home/ruoyi
|
||||
# 创建目录
|
||||
RUN mkdir -p /home/ruoyi
|
||||
# 指定路径
|
||||
WORKDIR /home/ruoyi
|
||||
# 复制jar文件到路径
|
||||
COPY ./jar/tuoheng-device.jar /home/ruoyi/tuoheng-device.jar
|
||||
# 启动系统服务
|
||||
ENTRYPOINT ["java","-jar","tuoheng-device.jar"]
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# 基础镜像
|
||||
FROM registry.t-aaron.com/eclipse-temurin:21.0.9_10-jre-alpine-3.23
|
||||
# author
|
||||
MAINTAINER ruoyi
|
||||
|
||||
# 挂载目录
|
||||
VOLUME /home/ruoyi
|
||||
# 创建目录
|
||||
RUN mkdir -p /home/ruoyi
|
||||
# 指定路径
|
||||
WORKDIR /home/ruoyi
|
||||
# 复制jar文件到路径
|
||||
COPY ./jar/ruoyi-modules-file.jar /home/ruoyi/ruoyi-modules-file.jar
|
||||
# 启动文件服务
|
||||
ENTRYPOINT ["java","-jar","ruoyi-modules-file.jar"]
|
||||
|
|
@ -0,0 +1 @@
|
|||
存放文件服务打包好的jar文件,用于docker启动应用。
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# 基础镜像
|
||||
FROM registry.t-aaron.com/eclipse-temurin:21.0.9_10-jre-alpine-3.23
|
||||
# author
|
||||
MAINTAINER tuoheng
|
||||
|
||||
# 挂载目录
|
||||
VOLUME /home/ruoyi
|
||||
# 创建目录
|
||||
RUN mkdir -p /home/ruoyi
|
||||
# 指定路径
|
||||
WORKDIR /home/ruoyi
|
||||
# 复制jar文件到路径
|
||||
COPY ./jar/tuoheng-fms.jar /home/ruoyi/tuoheng-fms.jar
|
||||
# 启动系统服务
|
||||
ENTRYPOINT ["java","-jar","tuoheng-fms.jar"]
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# 基础镜像
|
||||
FROM registry.t-aaron.com/eclipse-temurin:21.0.9_10-jre-alpine-3.23
|
||||
# author
|
||||
MAINTAINER ruoyi
|
||||
|
||||
# 挂载目录
|
||||
VOLUME /home/ruoyi
|
||||
# 创建目录
|
||||
RUN mkdir -p /home/ruoyi
|
||||
# 指定路径
|
||||
WORKDIR /home/ruoyi
|
||||
# 复制jar文件到路径
|
||||
COPY ./jar/ruoyi-modules-gen.jar /home/ruoyi/ruoyi-modules-gen.jar
|
||||
# 启动代码生成服务
|
||||
ENTRYPOINT ["java","-jar","ruoyi-modules-gen.jar"]
|
||||
|
|
@ -0,0 +1 @@
|
|||
存放代码生成打包好的jar文件,用于docker启动应用。
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# 基础镜像
|
||||
FROM registry.t-aaron.com/eclipse-temurin:21.0.9_10-jre-alpine-3.23
|
||||
# author
|
||||
MAINTAINER ruoyi
|
||||
|
||||
# 挂载目录
|
||||
VOLUME /home/ruoyi
|
||||
# 创建目录
|
||||
RUN mkdir -p /home/ruoyi
|
||||
# 指定路径
|
||||
WORKDIR /home/ruoyi
|
||||
# 复制jar文件到路径
|
||||
COPY ./jar/ruoyi-modules-job.jar /home/ruoyi/ruoyi-modules-job.jar
|
||||
# 启动定时任务服务
|
||||
ENTRYPOINT ["java","-jar","ruoyi-modules-job.jar"]
|
||||
|
|
@ -0,0 +1 @@
|
|||
存放定时任务打包好的jar文件,用于docker启动应用。
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# 基础镜像
|
||||
FROM registry.t-aaron.com/eclipse-temurin:21.0.9_10-jre-alpine-3.23
|
||||
# author
|
||||
MAINTAINER tuoheng
|
||||
|
||||
# 挂载目录
|
||||
VOLUME /home/ruoyi
|
||||
# 创建目录
|
||||
RUN mkdir -p /home/ruoyi
|
||||
# 指定路径
|
||||
WORKDIR /home/ruoyi
|
||||
# 复制jar文件到路径
|
||||
COPY ./jar/tuoheng-media.jar /home/ruoyi/tuoheng-media.jar
|
||||
# 启动系统服务
|
||||
ENTRYPOINT ["java","-jar","tuoheng-media.jar"]
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# 基础镜像
|
||||
FROM registry.t-aaron.com/eclipse-temurin:21.0.9_10-jre-alpine-3.23
|
||||
# author
|
||||
MAINTAINER ruoyi
|
||||
|
||||
# 挂载目录
|
||||
VOLUME /home/ruoyi
|
||||
# 创建目录
|
||||
RUN mkdir -p /home/ruoyi
|
||||
# 指定路径
|
||||
WORKDIR /home/ruoyi
|
||||
# 复制jar文件到路径
|
||||
COPY ./jar/ruoyi-modules-system.jar /home/ruoyi/ruoyi-modules-system.jar
|
||||
# 启动系统服务
|
||||
ENTRYPOINT ["java","-jar","ruoyi-modules-system.jar"]
|
||||
|
|
@ -0,0 +1 @@
|
|||
存放系统模块打包好的jar文件,用于docker启动应用。
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# 基础镜像
|
||||
FROM registry.t-aaron.com/eclipse-temurin:21.0.9_10-jre-alpine-3.23
|
||||
# author
|
||||
MAINTAINER tuoheng
|
||||
|
||||
# 挂载目录
|
||||
VOLUME /home/ruoyi
|
||||
# 创建目录
|
||||
RUN mkdir -p /home/ruoyi
|
||||
# 指定路径
|
||||
WORKDIR /home/ruoyi
|
||||
# 复制jar文件到路径
|
||||
COPY ./jar/tuoheng-task.jar /home/ruoyi/tuoheng-task.jar
|
||||
# 启动系统服务
|
||||
ENTRYPOINT ["java","-jar","tuoheng-task.jar"]
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# 基础镜像
|
||||
FROM registry.t-aaron.com/eclipse-temurin:21.0.9_10-jre-alpine-3.23
|
||||
# author
|
||||
MAINTAINER ruoyi
|
||||
|
||||
# 挂载目录
|
||||
VOLUME /home/ruoyi
|
||||
# 创建目录
|
||||
RUN mkdir -p /home/ruoyi
|
||||
# 指定路径
|
||||
WORKDIR /home/ruoyi
|
||||
# 复制jar文件到路径
|
||||
COPY ./jar/ruoyi-visual-monitor.jar /home/ruoyi/ruoyi-visual-monitor.jar
|
||||
# 启动系统服务
|
||||
ENTRYPOINT ["java","-jar","ruoyi-visual-monitor.jar"]
|
||||
|
|
@ -0,0 +1 @@
|
|||
存放监控中心打包好的jar文件,用于docker启动应用。
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
# 00-初始化环境
|
||||
|
||||
## 说明
|
||||
|
||||
初始化 Kubernetes 环境,创建 `ruoyi` 命名空间。
|
||||
|
||||
## 文件说明
|
||||
|
||||
- `namespace.yaml` - 命名空间配置
|
||||
- `deploy.sh` - 部署脚本
|
||||
|
||||
## 部署步骤
|
||||
|
||||
```bash
|
||||
# 进入目录
|
||||
cd 00-init
|
||||
|
||||
# 执行部署脚本
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
## 验证
|
||||
|
||||
```bash
|
||||
# 查看命名空间
|
||||
kubectl get namespace ruoyi
|
||||
```
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
echo "=========================================="
|
||||
echo "初始化 Kubernetes 环境"
|
||||
echo "=========================================="
|
||||
|
||||
# 创建命名空间
|
||||
echo "创建命名空间 ruoyi..."
|
||||
kubectl apply -f namespace.yaml
|
||||
|
||||
# 等待一下确保资源创建完成
|
||||
sleep 2
|
||||
|
||||
# 检查命名空间是否创建成功
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "检查部署结果"
|
||||
echo "=========================================="
|
||||
|
||||
if kubectl get namespace ruoyi &> /dev/null; then
|
||||
echo "✓ 命名空间 ruoyi 创建成功"
|
||||
kubectl get namespace ruoyi
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "✓ 初始化完成!"
|
||||
echo "=========================================="
|
||||
exit 0
|
||||
else
|
||||
echo "✗ 命名空间创建失败"
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "✗ 初始化失败!"
|
||||
echo "=========================================="
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: ruoyi
|
||||
labels:
|
||||
name: ruoyi
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
# 01-MySQL 部署
|
||||
|
||||
## 说明
|
||||
|
||||
部署 MySQL 数据库服务,使用 StatefulSet 保证数据持久化。
|
||||
|
||||
## 部署流程
|
||||
|
||||
1. **复制 SQL 文件** - 将 SQL 文件复制到 docker/mysql/db 目录
|
||||
2. **构建镜像** - 使用 docker-compose 构建包含 SQL 的 MySQL 镜像
|
||||
3. **部署到 K8s** - 部署 Service 和 StatefulSet
|
||||
4. **等待启动** - 等待 Pod 就绪
|
||||
|
||||
## 配置说明
|
||||
|
||||
- **Service 名称**: ruoyi-mysql
|
||||
- **端口**: 3306
|
||||
- **存储**: 10Gi PVC
|
||||
- **密码**: password
|
||||
- **数据库**: ry-cloud
|
||||
- **镜像**: mysql-runtime(通过 docker-compose 构建)
|
||||
|
||||
## 文件说明
|
||||
|
||||
- `service.yaml` - MySQL Service 配置
|
||||
- `statefulset.yaml` - MySQL StatefulSet 配置
|
||||
- `deploy.sh` - 一键部署脚本(包含镜像构建)
|
||||
|
||||
## 部署步骤
|
||||
|
||||
```bash
|
||||
# 进入目录
|
||||
cd 01-mysql
|
||||
|
||||
# 执行部署脚本(会自动复制 SQL、构建镜像、部署到 K8s)
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
## 验证
|
||||
|
||||
```bash
|
||||
# 查看 Pod 状态
|
||||
kubectl get pods -n ruoyi -l app=mysql
|
||||
|
||||
# 查看 Service
|
||||
kubectl get svc -n ruoyi ruoyi-mysql
|
||||
|
||||
# 查看 PVC
|
||||
kubectl get pvc -n ruoyi
|
||||
```
|
||||
|
||||
## 连接测试
|
||||
|
||||
```bash
|
||||
# 进入 MySQL Pod
|
||||
kubectl exec -it mysql-0 -n ruoyi -- mysql -uroot -ppassword
|
||||
|
||||
# 查看数据库
|
||||
SHOW DATABASES;
|
||||
```
|
||||
|
|
@ -0,0 +1,173 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
DOCKER_DIR="../../docker"
|
||||
SQL_DIR="../../sql"
|
||||
|
||||
echo "=========================================="
|
||||
echo "部署 MySQL"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查是否需要清理旧数据
|
||||
echo ""
|
||||
echo "检查现有 MySQL 部署..."
|
||||
if kubectl get statefulset mysql -n ruoyi &> /dev/null; then
|
||||
echo "⚠️ 检测到已存在的 MySQL 部署,自动清理..."
|
||||
|
||||
echo "删除旧的 MySQL StatefulSet..."
|
||||
kubectl delete statefulset mysql -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "删除旧的 MySQL Service..."
|
||||
kubectl delete service ruoyi-mysql -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "删除旧的 PVC(数据将被清空)..."
|
||||
kubectl delete pvc -l app=mysql -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "等待资源清理完成..."
|
||||
sleep 5
|
||||
|
||||
echo "✓ 旧数据清理完成"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 步骤 1: 复制 SQL 文件
|
||||
echo "步骤 1: 复制 SQL 文件到 docker/mysql/db..."
|
||||
cp "$SQL_DIR/ry_20250523.sql" "$DOCKER_DIR/mysql/db/"
|
||||
cp "$SQL_DIR/ry_config_20250902.sql" "$DOCKER_DIR/mysql/db/"
|
||||
echo "✓ SQL 文件复制完成"
|
||||
|
||||
# 步骤 2: 构建 MySQL 镜像
|
||||
echo ""
|
||||
echo "步骤 2: 构建 MySQL 镜像..."
|
||||
cd "$DOCKER_DIR"
|
||||
docker-compose build --no-cache ruoyi-mysql
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ MySQL 镜像构建完成"
|
||||
else
|
||||
echo "✗ MySQL 镜像构建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 2.5: 检测环境并导入镜像(仅 Minikube 需要)
|
||||
echo ""
|
||||
if command -v minikube &> /dev/null && minikube status &> /dev/null; then
|
||||
echo "检测到 Minikube 环境,导入镜像(镜像较大,可能需要 1-2 分钟)..."
|
||||
|
||||
# 先导出镜像到临时文件
|
||||
TEMP_IMAGE="/tmp/mysql-runtime-$$.tar"
|
||||
echo "导出镜像到临时文件..."
|
||||
docker save -o "$TEMP_IMAGE" mysql-runtime
|
||||
|
||||
# 导入到 Minikube
|
||||
echo "导入镜像到 Minikube..."
|
||||
minikube image load "$TEMP_IMAGE" &
|
||||
PID=$!
|
||||
|
||||
# 显示进度,最多等待 5 分钟
|
||||
COUNT=0
|
||||
MAX_COUNT=150
|
||||
while kill -0 $PID 2>/dev/null; do
|
||||
echo -n "."
|
||||
sleep 2
|
||||
COUNT=$((COUNT + 1))
|
||||
if [ $COUNT -ge $MAX_COUNT ]; then
|
||||
kill $PID 2>/dev/null
|
||||
echo ""
|
||||
echo "✗ 镜像导入超时(超过 5 分钟)"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
wait $PID
|
||||
EXIT_CODE=$?
|
||||
|
||||
echo ""
|
||||
if [ $EXIT_CODE -eq 0 ]; then
|
||||
echo "✓ 镜像导入到 Minikube 完成"
|
||||
else
|
||||
echo "✗ 镜像导入失败"
|
||||
rm -f "$TEMP_IMAGE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 清理临时文件
|
||||
rm -f "$TEMP_IMAGE"
|
||||
else
|
||||
echo "检测到 k3s/k8s 环境,跳过镜像导入(使用本地 Docker 镜像)"
|
||||
fi
|
||||
|
||||
# 步骤 3: 部署到 K8s
|
||||
echo ""
|
||||
echo "步骤 3: 部署到 Kubernetes..."
|
||||
cd -
|
||||
kubectl apply -f service.yaml
|
||||
kubectl apply -f statefulset.yaml
|
||||
|
||||
# 步骤 4: 等待 Pod 启动
|
||||
echo ""
|
||||
echo "步骤 4: 等待 MySQL Pod 启动..."
|
||||
kubectl wait --for=condition=ready pod -l app=mysql -n ruoyi --timeout=300s
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "✗ MySQL Pod 启动超时"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查部署状态
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "检查部署结果"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查 Pod 状态
|
||||
echo "检查 MySQL Pod 状态..."
|
||||
POD_STATUS=$(kubectl get pods -n ruoyi -l app=mysql -o jsonpath='{.items[0].status.phase}')
|
||||
if [ "$POD_STATUS" == "Running" ]; then
|
||||
echo "✓ MySQL Pod 运行正常"
|
||||
kubectl get pods -n ruoyi -l app=mysql
|
||||
else
|
||||
echo "✗ MySQL Pod 状态异常: $POD_STATUS"
|
||||
kubectl get pods -n ruoyi -l app=mysql
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 检查 Service 状态
|
||||
echo "检查 MySQL Service 状态..."
|
||||
if kubectl get svc ruoyi-mysql -n ruoyi &> /dev/null; then
|
||||
echo "✓ MySQL Service 创建成功"
|
||||
kubectl get svc -n ruoyi ruoyi-mysql
|
||||
else
|
||||
echo "✗ MySQL Service 创建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 检查 PVC 状态
|
||||
echo "检查 MySQL PVC 状态..."
|
||||
PVC_STATUS=$(kubectl get pvc -n ruoyi -l app=mysql -o jsonpath='{.items[0].status.phase}')
|
||||
if [ "$PVC_STATUS" == "Bound" ]; then
|
||||
echo "✓ MySQL PVC 绑定成功"
|
||||
kubectl get pvc -n ruoyi -l app=mysql
|
||||
else
|
||||
echo "✗ MySQL PVC 状态异常: $PVC_STATUS"
|
||||
kubectl get pvc -n ruoyi -l app=mysql
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "✓ MySQL 部署完成!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "连接信息:"
|
||||
echo " Service: ruoyi-mysql.ruoyi.svc.cluster.local"
|
||||
echo " 端口: 3306"
|
||||
echo " 用户: root"
|
||||
echo " 密码: password"
|
||||
echo " 数据库: ry-cloud"
|
||||
echo ""
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: ruoyi-mysql
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
ports:
|
||||
- port: 3306
|
||||
targetPort: 3306
|
||||
name: mysql
|
||||
selector:
|
||||
app: mysql
|
||||
clusterIP: None
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: mysql
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
serviceName: ruoyi-mysql
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: mysql
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: mysql
|
||||
spec:
|
||||
containers:
|
||||
- name: mysql
|
||||
image: mysql-runtime
|
||||
imagePullPolicy: Never
|
||||
ports:
|
||||
- containerPort: 3306
|
||||
name: mysql
|
||||
env:
|
||||
- name: MYSQL_ROOT_PASSWORD
|
||||
value: "password"
|
||||
- name: MYSQL_DATABASE
|
||||
value: "ry-cloud"
|
||||
args:
|
||||
- --innodb-buffer-pool-size=80M
|
||||
- --character-set-server=utf8mb4
|
||||
- --collation-server=utf8mb4_unicode_ci
|
||||
- --default-time-zone=+8:00
|
||||
- --lower-case-table-names=1
|
||||
volumeMounts:
|
||||
- name: mysql-data
|
||||
mountPath: /var/lib/mysql
|
||||
volumeClaimTemplates:
|
||||
- metadata:
|
||||
name: mysql-data
|
||||
spec:
|
||||
accessModes: ["ReadWriteOnce"]
|
||||
resources:
|
||||
requests:
|
||||
storage: 10Gi
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
# 02-Redis 部署
|
||||
|
||||
## 说明
|
||||
|
||||
部署 Redis 缓存服务,使用 StatefulSet 保证数据持久化。
|
||||
|
||||
## 部署流程
|
||||
|
||||
1. **构建镜像** - 使用 docker-compose 构建 Redis 镜像
|
||||
2. **导入镜像** - 如果是 Minikube 环境,自动导入镜像
|
||||
3. **部署到 K8s** - 部署 Service 和 StatefulSet
|
||||
4. **等待启动** - 等待 Pod 就绪
|
||||
|
||||
## 配置说明
|
||||
|
||||
- **Service 名称**: ruoyi-redis
|
||||
- **端口**: 6379
|
||||
- **存储**: 5Gi PVC
|
||||
- **镜像**: redis-runtime(通过 docker-compose 构建)
|
||||
|
||||
## 文件说明
|
||||
|
||||
- `service.yaml` - Redis Service 配置
|
||||
- `statefulset.yaml` - Redis StatefulSet 配置
|
||||
- `deploy.sh` - 一键部署脚本(包含镜像构建)
|
||||
|
||||
## 部署步骤
|
||||
|
||||
```bash
|
||||
# 进入目录
|
||||
cd 02-redis
|
||||
|
||||
# 执行部署脚本
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
## 验证
|
||||
|
||||
```bash
|
||||
# 查看 Pod 状态
|
||||
kubectl get pods -n ruoyi -l app=redis
|
||||
|
||||
# 测试 Redis 连接
|
||||
kubectl exec -it redis-0 -n ruoyi -- redis-cli ping
|
||||
```
|
||||
|
|
@ -0,0 +1,166 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
DOCKER_DIR="../../docker"
|
||||
|
||||
echo "=========================================="
|
||||
echo "部署 Redis"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查是否需要清理旧数据
|
||||
echo ""
|
||||
echo "检查现有 Redis 部署..."
|
||||
if kubectl get statefulset redis -n ruoyi &> /dev/null; then
|
||||
echo "⚠️ 检测到已存在的 Redis 部署"
|
||||
echo ""
|
||||
read -p "是否删除旧的 Redis 部署和数据?(y/N): " -n 1 -r
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo "删除旧的 Redis StatefulSet..."
|
||||
kubectl delete statefulset redis -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "删除旧的 Redis Service..."
|
||||
kubectl delete service ruoyi-redis -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "删除旧的 PVC(数据将被清空)..."
|
||||
kubectl delete pvc -l app=redis -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "等待资源清理完成..."
|
||||
sleep 5
|
||||
|
||||
echo "✓ 旧数据清理完成"
|
||||
else
|
||||
echo "⚠️ 保留旧数据"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 步骤 1: 构建 Redis 镜像
|
||||
echo "步骤 1: 构建 Redis 镜像..."
|
||||
cd "$DOCKER_DIR"
|
||||
docker-compose build --no-cache ruoyi-redis
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Redis 镜像构建完成"
|
||||
else
|
||||
echo "✗ Redis 镜像构建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 1.5: 检测环境并导入镜像(仅 Minikube 需要)
|
||||
echo ""
|
||||
if command -v minikube &> /dev/null && minikube status &> /dev/null; then
|
||||
echo "检测到 Minikube 环境,导入镜像(可能需要 1-2 分钟)..."
|
||||
|
||||
# 先导出镜像到临时文件
|
||||
TEMP_IMAGE="/tmp/redis-runtime-$$.tar"
|
||||
echo "导出镜像到临时文件..."
|
||||
docker save -o "$TEMP_IMAGE" redis-runtime
|
||||
|
||||
# 导入到 Minikube
|
||||
echo "导入镜像到 Minikube..."
|
||||
minikube image load "$TEMP_IMAGE" &
|
||||
PID=$!
|
||||
|
||||
# 显示进度,最多等待 5 分钟
|
||||
COUNT=0
|
||||
MAX_COUNT=150
|
||||
while kill -0 $PID 2>/dev/null; do
|
||||
echo -n "."
|
||||
sleep 2
|
||||
COUNT=$((COUNT + 1))
|
||||
if [ $COUNT -ge $MAX_COUNT ]; then
|
||||
kill $PID 2>/dev/null
|
||||
echo ""
|
||||
echo "✗ 镜像导入超时(超过 5 分钟)"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
wait $PID
|
||||
EXIT_CODE=$?
|
||||
|
||||
echo ""
|
||||
if [ $EXIT_CODE -eq 0 ]; then
|
||||
echo "✓ 镜像导入到 Minikube 完成"
|
||||
else
|
||||
echo "✗ 镜像导入失败"
|
||||
rm -f "$TEMP_IMAGE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 清理临时文件
|
||||
rm -f "$TEMP_IMAGE"
|
||||
else
|
||||
echo "检测到 k3s/k8s 环境,跳过镜像导入(使用本地 Docker 镜像)"
|
||||
fi
|
||||
|
||||
# 步骤 2: 部署到 K8s
|
||||
echo ""
|
||||
echo "步骤 2: 部署到 Kubernetes..."
|
||||
cd -
|
||||
kubectl apply -f service.yaml
|
||||
kubectl apply -f statefulset.yaml
|
||||
|
||||
# 步骤 3: 等待 Pod 启动
|
||||
echo ""
|
||||
echo "步骤 3: 等待 Redis Pod 启动..."
|
||||
kubectl wait --for=condition=ready pod -l app=redis -n ruoyi --timeout=300s
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "✗ Redis Pod 启动超时"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查部署状态
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "检查部署结果"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查 Pod 状态
|
||||
echo "检查 Redis Pod 状态..."
|
||||
POD_STATUS=$(kubectl get pods -n ruoyi -l app=redis -o jsonpath='{.items[0].status.phase}')
|
||||
if [ "$POD_STATUS" == "Running" ]; then
|
||||
echo "✓ Redis Pod 运行正常"
|
||||
kubectl get pods -n ruoyi -l app=redis
|
||||
else
|
||||
echo "✗ Redis Pod 状态异常: $POD_STATUS"
|
||||
kubectl get pods -n ruoyi -l app=redis
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 检查 Service 状态
|
||||
echo "检查 Redis Service 状态..."
|
||||
if kubectl get svc ruoyi-redis -n ruoyi &> /dev/null; then
|
||||
echo "✓ Redis Service 创建成功"
|
||||
kubectl get svc -n ruoyi ruoyi-redis
|
||||
else
|
||||
echo "✗ Redis Service 创建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 检查 PVC 状态
|
||||
echo "检查 Redis PVC 状态..."
|
||||
PVC_STATUS=$(kubectl get pvc -n ruoyi -l app=redis -o jsonpath='{.items[0].status.phase}')
|
||||
if [ "$PVC_STATUS" == "Bound" ]; then
|
||||
echo "✓ Redis PVC 绑定成功"
|
||||
kubectl get pvc -n ruoyi -l app=redis
|
||||
else
|
||||
echo "✗ Redis PVC 状态异常: $PVC_STATUS"
|
||||
kubectl get pvc -n ruoyi -l app=redis
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "✓ Redis 部署完成!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "连接信息:"
|
||||
echo " Service: ruoyi-redis.ruoyi.svc.cluster.local"
|
||||
echo " 端口: 6379"
|
||||
echo ""
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: ruoyi-redis
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
ports:
|
||||
- port: 6379
|
||||
targetPort: 6379
|
||||
name: redis
|
||||
selector:
|
||||
app: redis
|
||||
clusterIP: None
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: redis
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
serviceName: ruoyi-redis
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: redis
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: redis
|
||||
spec:
|
||||
securityContext:
|
||||
fsGroup: 999
|
||||
containers:
|
||||
- name: redis
|
||||
image: redis-runtime
|
||||
imagePullPolicy: Never
|
||||
securityContext:
|
||||
runAsUser: 999
|
||||
runAsGroup: 999
|
||||
ports:
|
||||
- containerPort: 6379
|
||||
name: redis
|
||||
volumeMounts:
|
||||
- name: redis-data
|
||||
mountPath: /var/lib/redis
|
||||
volumeClaimTemplates:
|
||||
- metadata:
|
||||
name: redis-data
|
||||
spec:
|
||||
accessModes: ["ReadWriteOnce"]
|
||||
resources:
|
||||
requests:
|
||||
storage: 5Gi
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# 03-Nacos 部署
|
||||
|
||||
## 说明
|
||||
|
||||
部署 Nacos 服务注册与配置中心,使用 StatefulSet 保证数据持久化。
|
||||
|
||||
## 部署流程
|
||||
|
||||
1. **构建镜像** - 使用 docker-compose 构建 Nacos 镜像
|
||||
2. **导入镜像** - 如果是 Minikube 环境,自动导入镜像
|
||||
3. **部署到 K8s** - 部署 Service 和 StatefulSet
|
||||
4. **等待启动** - 等待 Pod 就绪
|
||||
|
||||
## 配置说明
|
||||
|
||||
- **Service 名称**: ruoyi-nacos
|
||||
- **端口**: 8848 (HTTP), 9848 (Client RPC), 9849 (Raft RPC)
|
||||
- **存储**: 5Gi PVC
|
||||
- **模式**: standalone(单机模式)
|
||||
- **镜像**: nacos-runtime(通过 docker-compose 构建)
|
||||
|
||||
## 文件说明
|
||||
|
||||
- `service.yaml` - Nacos Service 配置
|
||||
- `statefulset.yaml` - Nacos StatefulSet 配置
|
||||
- `deploy.sh` - 一键部署脚本(包含镜像构建)
|
||||
|
||||
## 部署步骤
|
||||
|
||||
```bash
|
||||
# 进入目录
|
||||
cd 03-nacos
|
||||
|
||||
# 执行部署脚本
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
## 验证
|
||||
|
||||
```bash
|
||||
# 查看 Pod 状态
|
||||
kubectl get pods -n ruoyi -l app=nacos
|
||||
|
||||
# 查看 Nacos 日志
|
||||
kubectl logs -f nacos-0 -n ruoyi
|
||||
```
|
||||
|
|
@ -0,0 +1,168 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
DOCKER_DIR="../../docker"
|
||||
|
||||
echo "=========================================="
|
||||
echo "部署 Nacos"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查是否需要清理旧数据
|
||||
echo ""
|
||||
echo "检查现有 Nacos 部署..."
|
||||
if kubectl get statefulset nacos -n ruoyi &> /dev/null; then
|
||||
echo "⚠️ 检测到已存在的 Nacos 部署"
|
||||
echo ""
|
||||
read -p "是否删除旧的 Nacos 部署和数据?(y/N): " -n 1 -r
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo "删除旧的 Nacos StatefulSet..."
|
||||
kubectl delete statefulset nacos -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "删除旧的 Nacos Service..."
|
||||
kubectl delete service ruoyi-nacos -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "删除旧的 PVC(数据将被清空)..."
|
||||
kubectl delete pvc -l app=nacos -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "等待资源清理完成..."
|
||||
sleep 5
|
||||
|
||||
echo "✓ 旧数据清理完成"
|
||||
else
|
||||
echo "⚠️ 保留旧数据"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 步骤 1: 构建 Nacos 镜像
|
||||
echo "步骤 1: 构建 Nacos 镜像..."
|
||||
cd "$DOCKER_DIR"
|
||||
docker-compose build --no-cache ruoyi-nacos
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Nacos 镜像构建完成"
|
||||
else
|
||||
echo "✗ Nacos 镜像构建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 1.5: 检测环境并导入镜像(仅 Minikube 需要)
|
||||
echo ""
|
||||
if command -v minikube &> /dev/null && minikube status &> /dev/null; then
|
||||
echo "检测到 Minikube 环境,导入镜像(可能需要 1-2 分钟)..."
|
||||
|
||||
# 先导出镜像到临时文件
|
||||
TEMP_IMAGE="/tmp/nacos-runtime-$$.tar"
|
||||
echo "导出镜像到临时文件..."
|
||||
docker save -o "$TEMP_IMAGE" nacos-runtime
|
||||
|
||||
# 导入到 Minikube
|
||||
echo "导入镜像到 Minikube..."
|
||||
minikube image load "$TEMP_IMAGE" &
|
||||
PID=$!
|
||||
|
||||
# 显示进度,最多等待 10 分钟
|
||||
COUNT=0
|
||||
MAX_COUNT=300
|
||||
while kill -0 $PID 2>/dev/null; do
|
||||
echo -n "."
|
||||
sleep 2
|
||||
COUNT=$((COUNT + 1))
|
||||
if [ $COUNT -ge $MAX_COUNT ]; then
|
||||
kill $PID 2>/dev/null
|
||||
echo ""
|
||||
echo "✗ 镜像导入超时(超过 10 分钟)"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
wait $PID
|
||||
EXIT_CODE=$?
|
||||
|
||||
echo ""
|
||||
if [ $EXIT_CODE -eq 0 ]; then
|
||||
echo "✓ 镜像导入到 Minikube 完成"
|
||||
else
|
||||
echo "✗ 镜像导入失败"
|
||||
rm -f "$TEMP_IMAGE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 清理临时文件
|
||||
rm -f "$TEMP_IMAGE"
|
||||
else
|
||||
echo "检测到 k3s/k8s 环境,跳过镜像导入(使用本地 Docker 镜像)"
|
||||
fi
|
||||
|
||||
# 步骤 2: 部署到 K8s
|
||||
echo ""
|
||||
echo "步骤 2: 部署到 Kubernetes..."
|
||||
cd -
|
||||
kubectl apply -f service.yaml
|
||||
kubectl apply -f statefulset.yaml
|
||||
|
||||
# 步骤 3: 等待 Pod 启动
|
||||
echo ""
|
||||
echo "步骤 3: 等待 Nacos Pod 启动..."
|
||||
kubectl wait --for=condition=ready pod -l app=nacos -n ruoyi --timeout=300s
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "✗ Nacos Pod 启动超时"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查部署状态
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "检查部署结果"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查 Pod 状态
|
||||
echo "检查 Nacos Pod 状态..."
|
||||
POD_STATUS=$(kubectl get pods -n ruoyi -l app=nacos -o jsonpath='{.items[0].status.phase}')
|
||||
if [ "$POD_STATUS" == "Running" ]; then
|
||||
echo "✓ Nacos Pod 运行正常"
|
||||
kubectl get pods -n ruoyi -l app=nacos
|
||||
else
|
||||
echo "✗ Nacos Pod 状态异常: $POD_STATUS"
|
||||
kubectl get pods -n ruoyi -l app=nacos
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 检查 Service 状态
|
||||
echo "检查 Nacos Service 状态..."
|
||||
if kubectl get svc ruoyi-nacos -n ruoyi &> /dev/null; then
|
||||
echo "✓ Nacos Service 创建成功"
|
||||
kubectl get svc -n ruoyi ruoyi-nacos
|
||||
else
|
||||
echo "✗ Nacos Service 创建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 检查 PVC 状态
|
||||
echo "检查 Nacos PVC 状态..."
|
||||
PVC_STATUS=$(kubectl get pvc -n ruoyi -l app=nacos -o jsonpath='{.items[0].status.phase}')
|
||||
if [ "$PVC_STATUS" == "Bound" ]; then
|
||||
echo "✓ Nacos PVC 绑定成功"
|
||||
kubectl get pvc -n ruoyi -l app=nacos
|
||||
else
|
||||
echo "✗ Nacos PVC 状态异常: $PVC_STATUS"
|
||||
kubectl get pvc -n ruoyi -l app=nacos
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "✓ Nacos 部署完成!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "连接信息:"
|
||||
echo " Service: ruoyi-nacos.ruoyi.svc.cluster.local"
|
||||
echo " HTTP 端口: 8848"
|
||||
echo " Client RPC 端口: 9848"
|
||||
echo " Raft RPC 端口: 9849"
|
||||
echo ""
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: ruoyi-nacos
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
ports:
|
||||
- port: 8848
|
||||
targetPort: 8848
|
||||
name: http
|
||||
- port: 9848
|
||||
targetPort: 9848
|
||||
name: client-rpc
|
||||
- port: 9849
|
||||
targetPort: 9849
|
||||
name: raft-rpc
|
||||
selector:
|
||||
app: nacos
|
||||
clusterIP: None
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: nacos
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
serviceName: ruoyi-nacos
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: nacos
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: nacos
|
||||
spec:
|
||||
containers:
|
||||
- name: nacos
|
||||
image: nacos-runtime
|
||||
imagePullPolicy: Never
|
||||
ports:
|
||||
- containerPort: 8848
|
||||
name: http
|
||||
- containerPort: 9848
|
||||
name: client-rpc
|
||||
- containerPort: 9849
|
||||
name: raft-rpc
|
||||
env:
|
||||
- name: MODE
|
||||
value: "standalone"
|
||||
volumeMounts:
|
||||
- name: nacos-data
|
||||
mountPath: /var/lib/nacos/logs
|
||||
volumeClaimTemplates:
|
||||
- metadata:
|
||||
name: nacos-data
|
||||
spec:
|
||||
accessModes: ["ReadWriteOnce"]
|
||||
resources:
|
||||
requests:
|
||||
storage: 5Gi
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
# 04-Gateway 部署
|
||||
|
||||
## 说明
|
||||
|
||||
部署 Gateway 网关服务,作为系统的统一入口。
|
||||
|
||||
## 部署流程
|
||||
|
||||
1. **复制 jar 文件** - 复制编译好的 jar 到 docker 目录
|
||||
2. **构建镜像** - 使用 docker-compose 构建 Gateway 镜像
|
||||
3. **导入镜像** - 如果是 Minikube 环境,自动导入镜像
|
||||
4. **部署到 K8s** - 部署 Service 和 Deployment
|
||||
5. **等待启动** - 等待 Pod 就绪
|
||||
|
||||
## 配置说明
|
||||
|
||||
- **Service 名称**: ruoyi-gateway
|
||||
- **端口**: 8080
|
||||
- **NodePort**: 30080(外部访问端口)
|
||||
- **镜像**: gateway-runtime
|
||||
|
||||
## 文件说明
|
||||
|
||||
- `service.yaml` - Gateway Service 配置(NodePort)
|
||||
- `deployment.yaml` - Gateway Deployment 配置
|
||||
- `deploy.sh` - 一键部署脚本
|
||||
|
||||
## 部署步骤
|
||||
|
||||
```bash
|
||||
# 进入目录
|
||||
cd 04-gateway
|
||||
|
||||
# 执行部署脚本
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
## 访问
|
||||
|
||||
```bash
|
||||
# 通过 NodePort 访问
|
||||
http://localhost:30080
|
||||
```
|
||||
|
|
@ -0,0 +1,164 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
DOCKER_DIR="../../docker"
|
||||
|
||||
echo "=========================================="
|
||||
echo "部署 Gateway"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查是否需要清理旧部署
|
||||
echo ""
|
||||
echo "检查现有 Gateway 部署..."
|
||||
if kubectl get deployment gateway -n ruoyi &> /dev/null; then
|
||||
echo "⚠️ 检测到已存在的 Gateway 部署,自动清理..."
|
||||
|
||||
echo "删除旧的 Gateway Deployment..."
|
||||
kubectl delete deployment gateway -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "删除旧的 Gateway Service..."
|
||||
kubectl delete service ruoyi-gateway -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "等待资源清理完成..."
|
||||
sleep 5
|
||||
|
||||
echo "✓ 旧部署清理完成"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 步骤 1: 打包 Gateway
|
||||
echo "步骤 1: 打包 Gateway jar..."
|
||||
cd ../../bin
|
||||
sh package.sh ruoyi-gateway
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Gateway 打包完成"
|
||||
else
|
||||
echo "✗ Gateway 打包失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 2: 复制 jar 文件
|
||||
echo ""
|
||||
echo "步骤 2: 复制 Gateway jar 文件..."
|
||||
cd -
|
||||
cp ../../ruoyi-gateway/target/ruoyi-gateway.jar "$DOCKER_DIR/ruoyi/gateway/jar/"
|
||||
echo "✓ jar 文件复制完成"
|
||||
|
||||
# 步骤 5: 构建 Gateway 镜像
|
||||
echo ""
|
||||
echo "步骤 3: 构建 Gateway 镜像..."
|
||||
cd "$DOCKER_DIR"
|
||||
docker-compose build --no-cache ruoyi-gateway
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Gateway 镜像构建完成"
|
||||
else
|
||||
echo "✗ Gateway 镜像构建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 3.5: 检测环境并导入镜像(仅 Minikube 需要)
|
||||
echo ""
|
||||
if command -v minikube &> /dev/null && minikube status &> /dev/null; then
|
||||
echo "检测到 Minikube 环境,导入镜像(可能需要 1-2 分钟)..."
|
||||
|
||||
# 先导出镜像到临时文件
|
||||
TEMP_IMAGE="/tmp/gateway-runtime-$$.tar"
|
||||
echo "导出镜像到临时文件..."
|
||||
docker save -o "$TEMP_IMAGE" gateway-runtime
|
||||
|
||||
# 导入到 Minikube
|
||||
echo "导入镜像到 Minikube..."
|
||||
minikube image load "$TEMP_IMAGE" &
|
||||
PID=$!
|
||||
|
||||
# 显示进度,最多等待 5 分钟
|
||||
COUNT=0
|
||||
MAX_COUNT=150
|
||||
while kill -0 $PID 2>/dev/null; do
|
||||
echo -n "."
|
||||
sleep 2
|
||||
COUNT=$((COUNT + 1))
|
||||
if [ $COUNT -ge $MAX_COUNT ]; then
|
||||
kill $PID 2>/dev/null
|
||||
echo ""
|
||||
echo "✗ 镜像导入超时(超过 5 分钟)"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
wait $PID
|
||||
EXIT_CODE=$?
|
||||
|
||||
echo ""
|
||||
if [ $EXIT_CODE -eq 0 ]; then
|
||||
echo "✓ 镜像导入到 Minikube 完成"
|
||||
else
|
||||
echo "✗ 镜像导入失败"
|
||||
rm -f "$TEMP_IMAGE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 清理临时文件
|
||||
rm -f "$TEMP_IMAGE"
|
||||
else
|
||||
echo "检测到 k3s/k8s 环境,跳过镜像导入(使用本地 Docker 镜像)"
|
||||
fi
|
||||
|
||||
# 步骤 5: 部署到 K8s
|
||||
echo ""
|
||||
echo "步骤 3: 部署到 Kubernetes..."
|
||||
cd -
|
||||
kubectl apply -f service.yaml
|
||||
kubectl apply -f deployment.yaml
|
||||
|
||||
# 步骤 5: 等待 Pod 启动
|
||||
echo ""
|
||||
echo "步骤 4: 等待 Gateway Pod 启动..."
|
||||
kubectl wait --for=condition=ready pod -l app=gateway -n ruoyi --timeout=300s
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "✗ Gateway Pod 启动超时"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查部署状态
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "检查部署结果"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查 Pod 状态
|
||||
echo "检查 Gateway Pod 状态..."
|
||||
POD_STATUS=$(kubectl get pods -n ruoyi -l app=gateway -o jsonpath='{.items[0].status.phase}')
|
||||
if [ "$POD_STATUS" == "Running" ]; then
|
||||
echo "✓ Gateway Pod 运行正常"
|
||||
kubectl get pods -n ruoyi -l app=gateway
|
||||
else
|
||||
echo "✗ Gateway Pod 状态异常: $POD_STATUS"
|
||||
kubectl get pods -n ruoyi -l app=gateway
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 检查 Service 状态
|
||||
echo "检查 Gateway Service 状态..."
|
||||
if kubectl get svc ruoyi-gateway -n ruoyi &> /dev/null; then
|
||||
echo "✓ Gateway Service 创建成功"
|
||||
kubectl get svc -n ruoyi ruoyi-gateway
|
||||
else
|
||||
echo "✗ Gateway Service 创建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "✓ Gateway 部署完成!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "访问信息:"
|
||||
echo " Service: ruoyi-gateway.ruoyi.svc.cluster.local"
|
||||
echo " 端口: 8080"
|
||||
echo " NodePort: 30080"
|
||||
echo " 访问地址: http://localhost:30080"
|
||||
echo ""
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: gateway
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: gateway
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: gateway
|
||||
spec:
|
||||
containers:
|
||||
- name: gateway
|
||||
image: gateway-runtime
|
||||
imagePullPolicy: Never
|
||||
ports:
|
||||
- containerPort: 8080
|
||||
name: http
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: ruoyi-gateway
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
type: NodePort
|
||||
ports:
|
||||
- port: 8080
|
||||
targetPort: 8080
|
||||
nodePort: 30080
|
||||
name: http
|
||||
selector:
|
||||
app: gateway
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
# 05-Nginx 部署
|
||||
|
||||
## 说明
|
||||
|
||||
部署 Nginx 前端服务,提供静态资源访问和反向代理。
|
||||
|
||||
## 部署流程
|
||||
|
||||
1. **构建前端** - 在 ruoyi-ui 目录执行 npm run build:prod
|
||||
2. **复制 dist** - 复制构建产物到 docker/nginx/html
|
||||
3. **构建镜像** - 使用 docker-compose 构建 Nginx 镜像
|
||||
4. **导入镜像** - 如果是 Minikube 环境,自动导入镜像
|
||||
5. **部署到 K8s** - 部署 Service 和 Deployment
|
||||
6. **等待启动** - 等待 Pod 就绪
|
||||
|
||||
## 配置说明
|
||||
|
||||
- **Service 名称**: ruoyi-nginx
|
||||
- **端口**: 80
|
||||
- **NodePort**: 30080(外部访问端口)
|
||||
- **镜像**: nginx-runtime
|
||||
|
||||
## 文件说明
|
||||
|
||||
- `service.yaml` - Nginx Service 配置(NodePort)
|
||||
- `deployment.yaml` - Nginx Deployment 配置
|
||||
- `deploy.sh` - 一键部署脚本
|
||||
|
||||
## 部署步骤
|
||||
|
||||
```bash
|
||||
# 进入目录
|
||||
cd 05-nginx
|
||||
|
||||
# 执行部署脚本
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
## 访问
|
||||
|
||||
```bash
|
||||
# 通过 NodePort 访问
|
||||
http://localhost:30080
|
||||
```
|
||||
|
|
@ -0,0 +1,174 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# 保存脚本所在目录的绝对路径
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
DOCKER_DIR="$SCRIPT_DIR/../../docker"
|
||||
UI_DIR="$SCRIPT_DIR/../../ruoyi-ui"
|
||||
|
||||
echo "=========================================="
|
||||
echo "部署 Nginx"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查是否需要清理旧部署
|
||||
echo ""
|
||||
echo "检查现有 Nginx 部署..."
|
||||
if kubectl get deployment nginx -n ruoyi &> /dev/null; then
|
||||
echo "⚠️ 检测到已存在的 Nginx 部署"
|
||||
# echo ""
|
||||
# read -p "是否删除旧的 Nginx 部署?(y/N): " -n 1 -r
|
||||
# echo
|
||||
# if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo "删除旧的 Nginx Deployment..."
|
||||
kubectl delete deployment nginx -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "删除旧的 Nginx Service..."
|
||||
kubectl delete service ruoyi-nginx -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "等待资源清理完成..."
|
||||
sleep 5
|
||||
|
||||
echo "✓ 旧部署清理完成"
|
||||
# else
|
||||
# echo "⚠️ 保留旧部署"
|
||||
# fi
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 步骤 1: 构建前端
|
||||
echo "步骤 1: 构建前端项目..."
|
||||
cd "$UI_DIR"
|
||||
npm run build:prod
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ 前端构建完成"
|
||||
else
|
||||
echo "✗ 前端构建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 2: 复制 dist 文件
|
||||
echo ""
|
||||
echo "步骤 2: 复制 dist 文件到 docker/nginx/html..."
|
||||
rm -rf "$DOCKER_DIR/nginx/html/dist"
|
||||
mkdir -p "$DOCKER_DIR/nginx/html/dist"
|
||||
cp -r dist/* "$DOCKER_DIR/nginx/html/dist/"
|
||||
echo "✓ dist 文件复制完成"
|
||||
|
||||
# 步骤 3: 构建 Nginx 镜像
|
||||
echo ""
|
||||
echo "步骤 3: 构建 Nginx 镜像..."
|
||||
cd "$DOCKER_DIR"
|
||||
docker-compose build --no-cache ruoyi-nginx
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Nginx 镜像构建完成"
|
||||
else
|
||||
echo "✗ Nginx 镜像构建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 3.5: 检测环境并导入镜像(仅 Minikube 需要)
|
||||
echo ""
|
||||
if command -v minikube &> /dev/null && minikube status &> /dev/null; then
|
||||
echo "检测到 Minikube 环境,导入镜像(可能需要 1-2 分钟)..."
|
||||
|
||||
# 先导出镜像到临时文件
|
||||
TEMP_IMAGE="/tmp/nginx-runtime-$$.tar"
|
||||
echo "导出镜像到临时文件..."
|
||||
docker save -o "$TEMP_IMAGE" nginx-runtime
|
||||
|
||||
# 导入到 Minikube
|
||||
echo "导入镜像到 Minikube..."
|
||||
minikube image load "$TEMP_IMAGE" &
|
||||
PID=$!
|
||||
|
||||
# 显示进度,最多等待 5 分钟
|
||||
COUNT=0
|
||||
MAX_COUNT=150
|
||||
while kill -0 $PID 2>/dev/null; do
|
||||
echo -n "."
|
||||
sleep 2
|
||||
COUNT=$((COUNT + 1))
|
||||
if [ $COUNT -ge $MAX_COUNT ]; then
|
||||
kill $PID 2>/dev/null
|
||||
echo ""
|
||||
echo "✗ 镜像导入超时(超过 5 分钟)"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
wait $PID
|
||||
EXIT_CODE=$?
|
||||
|
||||
echo ""
|
||||
if [ $EXIT_CODE -eq 0 ]; then
|
||||
echo "✓ 镜像导入到 Minikube 完成"
|
||||
else
|
||||
echo "✗ 镜像导入失败"
|
||||
rm -f "$TEMP_IMAGE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 清理临时文件
|
||||
rm -f "$TEMP_IMAGE"
|
||||
else
|
||||
echo "检测到 k3s/k8s 环境,跳过镜像导入(使用本地 Docker 镜像)"
|
||||
fi
|
||||
|
||||
# 步骤 4: 部署到 K8s
|
||||
echo ""
|
||||
echo "步骤 4: 部署到 Kubernetes..."
|
||||
cd "$SCRIPT_DIR"
|
||||
kubectl apply -f service.yaml
|
||||
kubectl apply -f deployment.yaml
|
||||
|
||||
# 步骤 5: 等待 Pod 启动
|
||||
echo ""
|
||||
echo "步骤 5: 等待 Nginx Pod 启动..."
|
||||
kubectl wait --for=condition=ready pod -l app=nginx -n ruoyi --timeout=300s
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "✗ Nginx Pod 启动超时"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查部署状态
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "检查部署结果"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查 Pod 状态
|
||||
echo "检查 Nginx Pod 状态..."
|
||||
POD_STATUS=$(kubectl get pods -n ruoyi -l app=nginx -o jsonpath='{.items[0].status.phase}')
|
||||
if [ "$POD_STATUS" == "Running" ]; then
|
||||
echo "✓ Nginx Pod 运行正常"
|
||||
kubectl get pods -n ruoyi -l app=nginx
|
||||
else
|
||||
echo "✗ Nginx Pod 状态异常: $POD_STATUS"
|
||||
kubectl get pods -n ruoyi -l app=nginx
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 检查 Service 状态
|
||||
echo "检查 Nginx Service 状态..."
|
||||
if kubectl get svc ruoyi-nginx -n ruoyi &> /dev/null; then
|
||||
echo "✓ Nginx Service 创建成功"
|
||||
kubectl get svc -n ruoyi ruoyi-nginx
|
||||
else
|
||||
echo "✗ Nginx Service 创建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "✓ Nginx 部署完成!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "访问信息:"
|
||||
echo " Service: ruoyi-nginx.ruoyi.svc.cluster.local"
|
||||
echo " 端口: 80"
|
||||
echo " NodePort: 30081"
|
||||
echo " 访问地址: http://localhost:30081"
|
||||
echo ""
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: nginx
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: nginx
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: nginx
|
||||
spec:
|
||||
containers:
|
||||
- name: nginx
|
||||
image: nginx-runtime
|
||||
imagePullPolicy: Never
|
||||
ports:
|
||||
- containerPort: 80
|
||||
name: http
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: ruoyi-nginx
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
type: NodePort
|
||||
ports:
|
||||
- port: 80
|
||||
targetPort: 80
|
||||
nodePort: 30081
|
||||
name: http
|
||||
selector:
|
||||
app: nginx
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
# 06-Auth 部署
|
||||
|
||||
## 说明
|
||||
|
||||
部署 Auth 认证服务,提供用户认证和授权功能。
|
||||
|
||||
## 部署流程
|
||||
|
||||
1. **打包 Auth** - 执行 bin/package.sh ruoyi-auth
|
||||
2. **复制 jar** - 复制 jar 文件到 docker/ruoyi/auth/jar
|
||||
3. **构建镜像** - 使用 docker-compose 构建 Auth 镜像
|
||||
4. **导入镜像** - 如果是 Minikube 环境,自动导入镜像
|
||||
5. **部署到 K8s** - 部署 Service 和 Deployment
|
||||
6. **等待启动** - 等待 Pod 就绪
|
||||
|
||||
## 配置说明
|
||||
|
||||
- **Service 名称**: ruoyi-auth
|
||||
- **端口**: 9200
|
||||
- **镜像**: ruoyi-auth-runtime
|
||||
- **依赖**: Redis
|
||||
|
||||
## 文件说明
|
||||
|
||||
- `service.yaml` - Auth Service 配置(ClusterIP)
|
||||
- `deployment.yaml` - Auth Deployment 配置
|
||||
- `deploy.sh` - 一键部署脚本
|
||||
|
||||
## 部署步骤
|
||||
|
||||
```bash
|
||||
# 进入目录
|
||||
cd 06-auth
|
||||
|
||||
# 执行部署脚本
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
## 访问
|
||||
|
||||
```bash
|
||||
# 集群内访问
|
||||
ruoyi-auth.ruoyi.svc.cluster.local:9200
|
||||
```
|
||||
|
|
@ -0,0 +1,163 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# 保存脚本所在目录的绝对路径
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
DOCKER_DIR="$SCRIPT_DIR/../../docker"
|
||||
|
||||
echo "=========================================="
|
||||
echo "部署 Auth"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查是否需要清理旧部署
|
||||
echo ""
|
||||
echo "检查现有 Auth 部署..."
|
||||
if kubectl get deployment auth -n ruoyi &> /dev/null; then
|
||||
echo "⚠️ 检测到已存在的 Auth 部署,自动清理..."
|
||||
|
||||
echo "删除旧的 Auth Deployment..."
|
||||
kubectl delete deployment auth -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "删除旧的 Auth Service..."
|
||||
kubectl delete service ruoyi-auth -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "等待资源清理完成..."
|
||||
sleep 5
|
||||
|
||||
echo "✓ 旧部署清理完成"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 步骤 1: 打包 Auth
|
||||
echo "步骤 1: 打包 Auth jar..."
|
||||
cd "$SCRIPT_DIR/../../bin"
|
||||
sh package.sh ruoyi-auth
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Auth 打包完成"
|
||||
else
|
||||
echo "✗ Auth 打包失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 2: 复制 jar 文件
|
||||
echo ""
|
||||
echo "步骤 2: 复制 Auth jar 文件..."
|
||||
cp "$SCRIPT_DIR/../../ruoyi-auth/target/ruoyi-auth.jar" "$DOCKER_DIR/ruoyi/auth/jar/"
|
||||
echo "✓ jar 文件复制完成"
|
||||
|
||||
# 步骤 3: 构建 Auth 镜像
|
||||
echo ""
|
||||
echo "步骤 3: 构建 Auth 镜像..."
|
||||
cd "$DOCKER_DIR"
|
||||
docker-compose build --no-cache ruoyi-auth
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Auth 镜像构建完成"
|
||||
else
|
||||
echo "✗ Auth 镜像构建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 3.5: 检测环境并导入镜像(仅 Minikube 需要)
|
||||
echo ""
|
||||
if command -v minikube &> /dev/null && minikube status &> /dev/null; then
|
||||
echo "检测到 Minikube 环境,导入镜像(可能需要 1-2 分钟)..."
|
||||
|
||||
# 先导出镜像到临时文件
|
||||
TEMP_IMAGE="/tmp/ruoyi-auth-runtime-$$.tar"
|
||||
echo "导出镜像到临时文件..."
|
||||
docker save -o "$TEMP_IMAGE" ruoyi-auth-runtime
|
||||
|
||||
# 导入到 Minikube
|
||||
echo "导入镜像到 Minikube..."
|
||||
minikube image load "$TEMP_IMAGE" &
|
||||
PID=$!
|
||||
|
||||
# 显示进度,最多等待 5 分钟
|
||||
COUNT=0
|
||||
MAX_COUNT=150
|
||||
while kill -0 $PID 2>/dev/null; do
|
||||
echo -n "."
|
||||
sleep 2
|
||||
COUNT=$((COUNT + 1))
|
||||
if [ $COUNT -ge $MAX_COUNT ]; then
|
||||
kill $PID 2>/dev/null
|
||||
echo ""
|
||||
echo "✗ 镜像导入超时(超过 5 分钟)"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
wait $PID
|
||||
EXIT_CODE=$?
|
||||
|
||||
echo ""
|
||||
if [ $EXIT_CODE -eq 0 ]; then
|
||||
echo "✓ 镜像导入到 Minikube 完成"
|
||||
else
|
||||
echo "✗ 镜像导入失败"
|
||||
rm -f "$TEMP_IMAGE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 清理临时文件
|
||||
rm -f "$TEMP_IMAGE"
|
||||
else
|
||||
echo "检测到 k3s/k8s 环境,跳过镜像导入(使用本地 Docker 镜像)"
|
||||
fi
|
||||
|
||||
# 步骤 4: 部署到 K8s
|
||||
echo ""
|
||||
echo "步骤 4: 部署到 Kubernetes..."
|
||||
cd "$SCRIPT_DIR"
|
||||
kubectl apply -f service.yaml
|
||||
kubectl apply -f deployment.yaml
|
||||
|
||||
# 步骤 5: 等待 Pod 启动
|
||||
echo ""
|
||||
echo "步骤 5: 等待 Auth Pod 启动..."
|
||||
kubectl wait --for=condition=ready pod -l app=auth -n ruoyi --timeout=300s
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "✗ Auth Pod 启动超时"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查部署状态
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "检查部署结果"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查 Pod 状态
|
||||
echo "检查 Auth Pod 状态..."
|
||||
POD_STATUS=$(kubectl get pods -n ruoyi -l app=auth -o jsonpath='{.items[0].status.phase}')
|
||||
if [ "$POD_STATUS" == "Running" ]; then
|
||||
echo "✓ Auth Pod 运行正常"
|
||||
kubectl get pods -n ruoyi -l app=auth
|
||||
else
|
||||
echo "✗ Auth Pod 状态异常: $POD_STATUS"
|
||||
kubectl get pods -n ruoyi -l app=auth
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 检查 Service 状态
|
||||
echo "检查 Auth Service 状态..."
|
||||
if kubectl get svc ruoyi-auth -n ruoyi &> /dev/null; then
|
||||
echo "✓ Auth Service 创建成功"
|
||||
kubectl get svc -n ruoyi ruoyi-auth
|
||||
else
|
||||
echo "✗ Auth Service 创建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "✓ Auth 部署完成!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "访问信息:"
|
||||
echo " Service: ruoyi-auth.ruoyi.svc.cluster.local"
|
||||
echo " 端口: 9200"
|
||||
echo ""
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: auth
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: auth
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: auth
|
||||
spec:
|
||||
containers:
|
||||
- name: auth
|
||||
image: ruoyi-auth-runtime
|
||||
imagePullPolicy: Never
|
||||
ports:
|
||||
- containerPort: 9200
|
||||
name: http
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: ruoyi-auth
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 9200
|
||||
targetPort: 9200
|
||||
name: http
|
||||
selector:
|
||||
app: auth
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
# 07-System 部署
|
||||
|
||||
## 说明
|
||||
|
||||
部署 System 系统模块,提供用户、角色、菜单、部门等系统管理功能。
|
||||
|
||||
## 部署流程
|
||||
|
||||
1. **打包 System** - 执行 bin/package.sh ruoyi-modules-system
|
||||
2. **复制 jar** - 复制 jar 文件到 docker/ruoyi/modules/system/jar
|
||||
3. **构建镜像** - 使用 docker-compose 构建 System 镜像
|
||||
4. **导入镜像** - 如果是 Minikube 环境,自动导入镜像
|
||||
5. **部署到 K8s** - 部署 Service 和 Deployment
|
||||
6. **等待启动** - 等待 Pod 就绪
|
||||
|
||||
## 配置说明
|
||||
|
||||
- **Service 名称**: ruoyi-modules-system
|
||||
- **端口**: 9201
|
||||
- **镜像**: ruoyi-modules-system-runtime
|
||||
- **依赖**: Redis, MySQL
|
||||
|
||||
## 文件说明
|
||||
|
||||
- `service.yaml` - System Service 配置(ClusterIP)
|
||||
- `deployment.yaml` - System Deployment 配置
|
||||
- `deploy.sh` - 一键部署脚本
|
||||
|
||||
## 部署步骤
|
||||
|
||||
```bash
|
||||
# 进入目录
|
||||
cd 07-system
|
||||
|
||||
# 执行部署脚本
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
## 访问
|
||||
|
||||
```bash
|
||||
# 集群内访问
|
||||
ruoyi-modules-system.ruoyi.svc.cluster.local:9201
|
||||
```
|
||||
|
|
@ -0,0 +1,163 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# 保存脚本所在目录的绝对路径
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
DOCKER_DIR="$SCRIPT_DIR/../../docker"
|
||||
|
||||
echo "=========================================="
|
||||
echo "部署 System"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查是否需要清理旧部署
|
||||
echo ""
|
||||
echo "检查现有 System 部署..."
|
||||
if kubectl get deployment system -n ruoyi &> /dev/null; then
|
||||
echo "⚠️ 检测到已存在的 System 部署,自动清理..."
|
||||
|
||||
echo "删除旧的 System Deployment..."
|
||||
kubectl delete deployment system -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "删除旧的 System Service..."
|
||||
kubectl delete service ruoyi-modules-system -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "等待资源清理完成..."
|
||||
sleep 5
|
||||
|
||||
echo "✓ 旧部署清理完成"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 步骤 1: 打包 System
|
||||
echo "步骤 1: 打包 System jar..."
|
||||
cd "$SCRIPT_DIR/../../bin"
|
||||
sh package.sh ruoyi-modules-system
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ System 打包完成"
|
||||
else
|
||||
echo "✗ System 打包失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 2: 复制 jar 文件
|
||||
echo ""
|
||||
echo "步骤 2: 复制 System jar 文件..."
|
||||
cp "$SCRIPT_DIR/../../ruoyi-modules/ruoyi-system/target/ruoyi-modules-system.jar" "$DOCKER_DIR/ruoyi/modules/system/jar/"
|
||||
echo "✓ jar 文件复制完成"
|
||||
|
||||
# 步骤 3: 构建 System 镜像
|
||||
echo ""
|
||||
echo "步骤 3: 构建 System 镜像..."
|
||||
cd "$DOCKER_DIR"
|
||||
docker-compose build --no-cache ruoyi-modules-system
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ System 镜像构建完成"
|
||||
else
|
||||
echo "✗ System 镜像构建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 3.5: 检测环境并导入镜像(仅 Minikube 需要)
|
||||
echo ""
|
||||
if command -v minikube &> /dev/null && minikube status &> /dev/null; then
|
||||
echo "检测到 Minikube 环境,导入镜像(可能需要 1-2 分钟)..."
|
||||
|
||||
# 先导出镜像到临时文件
|
||||
TEMP_IMAGE="/tmp/ruoyi-modules-system-runtime-$$.tar"
|
||||
echo "导出镜像到临时文件..."
|
||||
docker save -o "$TEMP_IMAGE" ruoyi-modules-system-runtime
|
||||
|
||||
# 导入到 Minikube
|
||||
echo "导入镜像到 Minikube..."
|
||||
minikube image load "$TEMP_IMAGE" &
|
||||
PID=$!
|
||||
|
||||
# 显示进度,最多等待 5 分钟
|
||||
COUNT=0
|
||||
MAX_COUNT=150
|
||||
while kill -0 $PID 2>/dev/null; do
|
||||
echo -n "."
|
||||
sleep 2
|
||||
COUNT=$((COUNT + 1))
|
||||
if [ $COUNT -ge $MAX_COUNT ]; then
|
||||
kill $PID 2>/dev/null
|
||||
echo ""
|
||||
echo "✗ 镜像导入超时(超过 5 分钟)"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
wait $PID
|
||||
EXIT_CODE=$?
|
||||
|
||||
echo ""
|
||||
if [ $EXIT_CODE -eq 0 ]; then
|
||||
echo "✓ 镜像导入到 Minikube 完成"
|
||||
else
|
||||
echo "✗ 镜像导入失败"
|
||||
rm -f "$TEMP_IMAGE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 清理临时文件
|
||||
rm -f "$TEMP_IMAGE"
|
||||
else
|
||||
echo "检测到 k3s/k8s 环境,跳过镜像导入(使用本地 Docker 镜像)"
|
||||
fi
|
||||
|
||||
# 步骤 4: 部署到 K8s
|
||||
echo ""
|
||||
echo "步骤 4: 部署到 Kubernetes..."
|
||||
cd "$SCRIPT_DIR"
|
||||
kubectl apply -f service.yaml
|
||||
kubectl apply -f deployment.yaml
|
||||
|
||||
# 步骤 5: 等待 Pod 启动
|
||||
echo ""
|
||||
echo "步骤 5: 等待 System Pod 启动..."
|
||||
kubectl wait --for=condition=ready pod -l app=system -n ruoyi --timeout=300s
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "✗ System Pod 启动超时"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查部署状态
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "检查部署结果"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查 Pod 状态
|
||||
echo "检查 System Pod 状态..."
|
||||
POD_STATUS=$(kubectl get pods -n ruoyi -l app=system -o jsonpath='{.items[0].status.phase}')
|
||||
if [ "$POD_STATUS" == "Running" ]; then
|
||||
echo "✓ System Pod 运行正常"
|
||||
kubectl get pods -n ruoyi -l app=system
|
||||
else
|
||||
echo "✗ System Pod 状态异常: $POD_STATUS"
|
||||
kubectl get pods -n ruoyi -l app=system
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 检查 Service 状态
|
||||
echo "检查 System Service 状态..."
|
||||
if kubectl get svc ruoyi-modules-system -n ruoyi &> /dev/null; then
|
||||
echo "✓ System Service 创建成功"
|
||||
kubectl get svc -n ruoyi ruoyi-modules-system
|
||||
else
|
||||
echo "✗ System Service 创建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "✓ System 部署完成!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "访问信息:"
|
||||
echo " Service: ruoyi-modules-system.ruoyi.svc.cluster.local"
|
||||
echo " 端口: 9201"
|
||||
echo ""
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: system
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: system
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: system
|
||||
spec:
|
||||
containers:
|
||||
- name: system
|
||||
image: ruoyi-modules-system-runtime
|
||||
imagePullPolicy: Never
|
||||
ports:
|
||||
- containerPort: 9201
|
||||
name: http
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: ruoyi-modules-system
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 9201
|
||||
targetPort: 9201
|
||||
name: http
|
||||
selector:
|
||||
app: system
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
# 08-Gen 部署
|
||||
|
||||
## 说明
|
||||
|
||||
部署 Gen 代码生成模块,提供代码生成功能。
|
||||
|
||||
## 部署流程
|
||||
|
||||
1. **打包 Gen** - 执行 bin/package.sh ruoyi-modules-gen
|
||||
2. **复制 jar** - 复制 jar 文件到 docker/ruoyi/modules/gen/jar
|
||||
3. **构建镜像** - 使用 docker-compose 构建 Gen 镜像
|
||||
4. **导入镜像** - 如果是 Minikube 环境,自动导入镜像
|
||||
5. **部署到 K8s** - 部署 Service 和 Deployment
|
||||
6. **等待启动** - 等待 Pod 就绪
|
||||
|
||||
## 配置说明
|
||||
|
||||
- **Service 名称**: ruoyi-modules-gen
|
||||
- **端口**: 9202
|
||||
- **镜像**: ruoyi-modules-gen-runtime
|
||||
- **依赖**: MySQL
|
||||
|
||||
## 文件说明
|
||||
|
||||
- `service.yaml` - Gen Service 配置(ClusterIP)
|
||||
- `deployment.yaml` - Gen Deployment 配置
|
||||
- `deploy.sh` - 一键部署脚本
|
||||
|
||||
## 部署步骤
|
||||
|
||||
```bash
|
||||
# 进入目录
|
||||
cd 08-gen
|
||||
|
||||
# 执行部署脚本
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
## 访问
|
||||
|
||||
```bash
|
||||
# 集群内访问
|
||||
ruoyi-modules-gen.ruoyi.svc.cluster.local:9202
|
||||
```
|
||||
|
|
@ -0,0 +1,163 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# 保存脚本所在目录的绝对路径
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
DOCKER_DIR="$SCRIPT_DIR/../../docker"
|
||||
|
||||
echo "=========================================="
|
||||
echo "部署 Gen"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查是否需要清理旧部署
|
||||
echo ""
|
||||
echo "检查现有 Gen 部署..."
|
||||
if kubectl get deployment gen -n ruoyi &> /dev/null; then
|
||||
echo "⚠️ 检测到已存在的 Gen 部署,自动清理..."
|
||||
|
||||
echo "删除旧的 Gen Deployment..."
|
||||
kubectl delete deployment gen -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "删除旧的 Gen Service..."
|
||||
kubectl delete service ruoyi-modules-gen -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "等待资源清理完成..."
|
||||
sleep 5
|
||||
|
||||
echo "✓ 旧部署清理完成"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 步骤 1: 打包 Gen
|
||||
echo "步骤 1: 打包 Gen jar..."
|
||||
cd "$SCRIPT_DIR/../../bin"
|
||||
sh package.sh ruoyi-modules-gen
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Gen 打包完成"
|
||||
else
|
||||
echo "✗ Gen 打包失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 2: 复制 jar 文件
|
||||
echo ""
|
||||
echo "步骤 2: 复制 Gen jar 文件..."
|
||||
cp "$SCRIPT_DIR/../../ruoyi-modules/ruoyi-gen/target/ruoyi-modules-gen.jar" "$DOCKER_DIR/ruoyi/modules/gen/jar/"
|
||||
echo "✓ jar 文件复制完成"
|
||||
|
||||
# 步骤 3: 构建 Gen 镜像
|
||||
echo ""
|
||||
echo "步骤 3: 构建 Gen 镜像..."
|
||||
cd "$DOCKER_DIR"
|
||||
docker-compose build --no-cache ruoyi-modules-gen
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Gen 镜像构建完成"
|
||||
else
|
||||
echo "✗ Gen 镜像构建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 3.5: 检测环境并导入镜像(仅 Minikube 需要)
|
||||
echo ""
|
||||
if command -v minikube &> /dev/null && minikube status &> /dev/null; then
|
||||
echo "检测到 Minikube 环境,导入镜像(可能需要 1-2 分钟)..."
|
||||
|
||||
# 先导出镜像到临时文件
|
||||
TEMP_IMAGE="/tmp/ruoyi-modules-gen-runtime-$$.tar"
|
||||
echo "导出镜像到临时文件..."
|
||||
docker save -o "$TEMP_IMAGE" ruoyi-modules-gen-runtime
|
||||
|
||||
# 导入到 Minikube
|
||||
echo "导入镜像到 Minikube..."
|
||||
minikube image load "$TEMP_IMAGE" &
|
||||
PID=$!
|
||||
|
||||
# 显示进度,最多等待 5 分钟
|
||||
COUNT=0
|
||||
MAX_COUNT=150
|
||||
while kill -0 $PID 2>/dev/null; do
|
||||
echo -n "."
|
||||
sleep 2
|
||||
COUNT=$((COUNT + 1))
|
||||
if [ $COUNT -ge $MAX_COUNT ]; then
|
||||
kill $PID 2>/dev/null
|
||||
echo ""
|
||||
echo "✗ 镜像导入超时(超过 5 分钟)"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
wait $PID
|
||||
EXIT_CODE=$?
|
||||
|
||||
echo ""
|
||||
if [ $EXIT_CODE -eq 0 ]; then
|
||||
echo "✓ 镜像导入到 Minikube 完成"
|
||||
else
|
||||
echo "✗ 镜像导入失败"
|
||||
rm -f "$TEMP_IMAGE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 清理临时文件
|
||||
rm -f "$TEMP_IMAGE"
|
||||
else
|
||||
echo "检测到 k3s/k8s 环境,跳过镜像导入(使用本地 Docker 镜像)"
|
||||
fi
|
||||
|
||||
# 步骤 4: 部署到 K8s
|
||||
echo ""
|
||||
echo "步骤 4: 部署到 Kubernetes..."
|
||||
cd "$SCRIPT_DIR"
|
||||
kubectl apply -f service.yaml
|
||||
kubectl apply -f deployment.yaml
|
||||
|
||||
# 步骤 5: 等待 Pod 启动
|
||||
echo ""
|
||||
echo "步骤 5: 等待 Gen Pod 启动..."
|
||||
kubectl wait --for=condition=ready pod -l app=gen -n ruoyi --timeout=300s
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "✗ Gen Pod 启动超时"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查部署状态
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "检查部署结果"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查 Pod 状态
|
||||
echo "检查 Gen Pod 状态..."
|
||||
POD_STATUS=$(kubectl get pods -n ruoyi -l app=gen -o jsonpath='{.items[0].status.phase}')
|
||||
if [ "$POD_STATUS" == "Running" ]; then
|
||||
echo "✓ Gen Pod 运行正常"
|
||||
kubectl get pods -n ruoyi -l app=gen
|
||||
else
|
||||
echo "✗ Gen Pod 状态异常: $POD_STATUS"
|
||||
kubectl get pods -n ruoyi -l app=gen
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 检查 Service 状态
|
||||
echo "检查 Gen Service 状态..."
|
||||
if kubectl get svc ruoyi-modules-gen -n ruoyi &> /dev/null; then
|
||||
echo "✓ Gen Service 创建成功"
|
||||
kubectl get svc -n ruoyi ruoyi-modules-gen
|
||||
else
|
||||
echo "✗ Gen Service 创建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "✓ Gen 部署完成!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "访问信息:"
|
||||
echo " Service: ruoyi-modules-gen.ruoyi.svc.cluster.local"
|
||||
echo " 端口: 9202"
|
||||
echo ""
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: gen
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: gen
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: gen
|
||||
spec:
|
||||
containers:
|
||||
- name: gen
|
||||
image: ruoyi-modules-gen-runtime
|
||||
imagePullPolicy: Never
|
||||
ports:
|
||||
- containerPort: 9202
|
||||
name: http
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: ruoyi-modules-gen
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 9202
|
||||
targetPort: 9202
|
||||
name: http
|
||||
selector:
|
||||
app: gen
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
# 09-Job 部署
|
||||
|
||||
## 说明
|
||||
|
||||
部署 Job 定时任务模块,提供定时任务调度功能。
|
||||
|
||||
## 部署流程
|
||||
|
||||
1. **打包 Job** - 执行 bin/package.sh ruoyi-modules-job
|
||||
2. **复制 jar** - 复制 jar 文件到 docker/ruoyi/modules/job/jar
|
||||
3. **构建镜像** - 使用 docker-compose 构建 Job 镜像
|
||||
4. **导入镜像** - 如果是 Minikube 环境,自动导入镜像
|
||||
5. **部署到 K8s** - 部署 Service 和 Deployment
|
||||
6. **等待启动** - 等待 Pod 就绪
|
||||
|
||||
## 配置说明
|
||||
|
||||
- **Service 名称**: ruoyi-modules-job
|
||||
- **端口**: 9203
|
||||
- **镜像**: ruoyi-modules-job-runtime
|
||||
- **依赖**: MySQL
|
||||
|
||||
## 文件说明
|
||||
|
||||
- `service.yaml` - Job Service 配置(ClusterIP)
|
||||
- `deployment.yaml` - Job Deployment 配置
|
||||
- `deploy.sh` - 一键部署脚本
|
||||
|
||||
## 部署步骤
|
||||
|
||||
```bash
|
||||
# 进入目录
|
||||
cd 09-job
|
||||
|
||||
# 执行部署脚本
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
## 访问
|
||||
|
||||
```bash
|
||||
# 集群内访问
|
||||
ruoyi-modules-job.ruoyi.svc.cluster.local:9203
|
||||
```
|
||||
|
|
@ -0,0 +1,164 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# 保存脚本所在目录的绝对路径
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
DOCKER_DIR="$SCRIPT_DIR/../../docker"
|
||||
|
||||
echo "=========================================="
|
||||
echo "部署 Job"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查是否需要清理旧部署
|
||||
echo ""
|
||||
echo "检查现有 Job 部署..."
|
||||
if kubectl get deployment job -n ruoyi &> /dev/null; then
|
||||
echo "⚠️ 检测到已存在的 Job 部署,自动清理..."
|
||||
|
||||
echo "删除旧的 Job Deployment..."
|
||||
kubectl delete deployment job -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "删除旧的 Job Service..."
|
||||
kubectl delete service ruoyi-modules-job -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "等待资源清理完成..."
|
||||
sleep 5
|
||||
|
||||
echo "✓ 旧部署清理完成"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 步骤 1: 打包 Job
|
||||
echo "步骤 1: 打包 Job jar..."
|
||||
cd "$SCRIPT_DIR/../../bin"
|
||||
sh package.sh ruoyi-modules-job
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Job 打包完成"
|
||||
else
|
||||
echo "✗ Job 打包失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 2: 复制 jar 文件
|
||||
echo ""
|
||||
echo "步骤 2: 复制 Job jar 文件..."
|
||||
cp "$SCRIPT_DIR/../../ruoyi-modules/ruoyi-job/target/ruoyi-modules-job.jar" "$DOCKER_DIR/ruoyi/modules/job/jar/"
|
||||
echo "✓ jar 文件复制完成"
|
||||
|
||||
# 步骤 3: 构建 Job 镜像
|
||||
echo ""
|
||||
echo "步骤 3: 构建 Job 镜像..."
|
||||
cd "$DOCKER_DIR"
|
||||
docker-compose build --no-cache ruoyi-modules-job
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Job 镜像构建完成"
|
||||
else
|
||||
echo "✗ Job 镜像构建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 3.5: 检测环境并导入镜像(仅 Minikube 需要)
|
||||
echo ""
|
||||
if command -v minikube &> /dev/null && minikube status &> /dev/null; then
|
||||
echo "检测到 Minikube 环境,导入镜像(可能需要 1-2 分钟)..."
|
||||
|
||||
# 先导出镜像到临时文件
|
||||
TEMP_IMAGE="/tmp/ruoyi-modules-job-runtime-$$.tar"
|
||||
echo "导出镜像到临时文件..."
|
||||
docker save -o "$TEMP_IMAGE" ruoyi-modules-job-runtime
|
||||
|
||||
# 导入到 Minikube
|
||||
echo "导入镜像到 Minikube..."
|
||||
minikube image load "$TEMP_IMAGE" &
|
||||
PID=$!
|
||||
|
||||
# 显示进度,最多等待 5 分钟
|
||||
COUNT=0
|
||||
MAX_COUNT=150
|
||||
while kill -0 $PID 2>/dev/null; do
|
||||
echo -n "."
|
||||
sleep 2
|
||||
COUNT=$((COUNT + 1))
|
||||
if [ $COUNT -ge $MAX_COUNT ]; then
|
||||
kill $PID 2>/dev/null
|
||||
echo ""
|
||||
echo "✗ 镜像导入超时(超过 5 分钟)"
|
||||
rm -f "$TEMP_IMAGE"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
wait $PID
|
||||
EXIT_CODE=$?
|
||||
|
||||
echo ""
|
||||
if [ $EXIT_CODE -eq 0 ]; then
|
||||
echo "✓ 镜像导入到 Minikube 完成"
|
||||
else
|
||||
echo "✗ 镜像导入失败"
|
||||
rm -f "$TEMP_IMAGE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 清理临时文件
|
||||
rm -f "$TEMP_IMAGE"
|
||||
else
|
||||
echo "检测到 k3s/k8s 环境,跳过镜像导入(使用本地 Docker 镜像)"
|
||||
fi
|
||||
|
||||
# 步骤 4: 部署到 K8s
|
||||
echo ""
|
||||
echo "步骤 4: 部署到 Kubernetes..."
|
||||
cd "$SCRIPT_DIR"
|
||||
kubectl apply -f service.yaml
|
||||
kubectl apply -f deployment.yaml
|
||||
|
||||
# 步骤 5: 等待 Pod 启动
|
||||
echo ""
|
||||
echo "步骤 5: 等待 Job Pod 启动..."
|
||||
kubectl wait --for=condition=ready pod -l app=job -n ruoyi --timeout=300s
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "✗ Job Pod 启动超时"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查部署状态
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "检查部署结果"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查 Pod 状态
|
||||
echo "检查 Job Pod 状态..."
|
||||
POD_STATUS=$(kubectl get pods -n ruoyi -l app=job -o jsonpath='{.items[0].status.phase}')
|
||||
if [ "$POD_STATUS" == "Running" ]; then
|
||||
echo "✓ Job Pod 运行正常"
|
||||
kubectl get pods -n ruoyi -l app=job
|
||||
else
|
||||
echo "✗ Job Pod 状态异常: $POD_STATUS"
|
||||
kubectl get pods -n ruoyi -l app=job
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 检查 Service 状态
|
||||
echo "检查 Job Service 状态..."
|
||||
if kubectl get svc ruoyi-modules-job -n ruoyi &> /dev/null; then
|
||||
echo "✓ Job Service 创建成功"
|
||||
kubectl get svc -n ruoyi ruoyi-modules-job
|
||||
else
|
||||
echo "✗ Job Service 创建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "✓ Job 部署完成!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "访问信息:"
|
||||
echo " Service: ruoyi-modules-job.ruoyi.svc.cluster.local"
|
||||
echo " 端口: 9203"
|
||||
echo ""
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: job
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: job
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: job
|
||||
spec:
|
||||
containers:
|
||||
- name: job
|
||||
image: ruoyi-modules-job-runtime
|
||||
imagePullPolicy: Never
|
||||
ports:
|
||||
- containerPort: 9203
|
||||
name: http
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: ruoyi-modules-job
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 9203
|
||||
targetPort: 9203
|
||||
name: http
|
||||
selector:
|
||||
app: job
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# 10-File 部署
|
||||
|
||||
## 说明
|
||||
|
||||
部署 File 文件服务模块,提供文件上传和下载功能。
|
||||
|
||||
## 部署流程
|
||||
|
||||
1. **打包 File** - 执行 bin/package.sh ruoyi-modules-file
|
||||
2. **复制 jar** - 复制 jar 文件到 docker/ruoyi/modules/file/jar
|
||||
3. **构建镜像** - 使用 docker-compose 构建 File 镜像
|
||||
4. **导入镜像** - 如果是 Minikube 环境,自动导入镜像
|
||||
5. **部署到 K8s** - 部署 PVC、Service 和 Deployment
|
||||
6. **等待启动** - 等待 Pod 就绪
|
||||
|
||||
## 配置说明
|
||||
|
||||
- **Service 名称**: ruoyi-modules-file
|
||||
- **端口**: 9300
|
||||
- **镜像**: ruoyi-modules-file-runtime
|
||||
- **存储**: 10Gi PVC 用于文件上传
|
||||
- **上传路径**: /var/lib/uploadPath
|
||||
|
||||
## 文件说明
|
||||
|
||||
- `service.yaml` - File Service 配置(ClusterIP)
|
||||
- `deployment.yaml` - File Deployment 配置
|
||||
- `pvc.yaml` - 文件上传 PVC 配置
|
||||
- `deploy.sh` - 一键部署脚本
|
||||
|
||||
## 部署步骤
|
||||
|
||||
```bash
|
||||
# 进入目录
|
||||
cd 10-file
|
||||
|
||||
# 执行部署脚本
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
## 访问
|
||||
|
||||
```bash
|
||||
# 集群内访问
|
||||
ruoyi-modules-file.ruoyi.svc.cluster.local:9300
|
||||
```
|
||||
|
|
@ -0,0 +1,179 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# 保存脚本所在目录的绝对路径
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
DOCKER_DIR="$SCRIPT_DIR/../../docker"
|
||||
|
||||
echo "=========================================="
|
||||
echo "部署 File"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查是否需要清理旧部署
|
||||
echo ""
|
||||
echo "检查现有 File 部署..."
|
||||
if kubectl get deployment file -n ruoyi &> /dev/null; then
|
||||
echo "⚠️ 检测到已存在的 File 部署,自动清理..."
|
||||
|
||||
echo "删除旧的 File Deployment..."
|
||||
kubectl delete deployment file -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "删除旧的 File Service..."
|
||||
kubectl delete service ruoyi-modules-file -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "等待资源清理完成..."
|
||||
sleep 5
|
||||
|
||||
echo "✓ 旧部署清理完成"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 步骤 1: 打包 File
|
||||
echo "步骤 1: 打包 File jar..."
|
||||
cd "$SCRIPT_DIR/../../bin"
|
||||
sh package.sh ruoyi-modules-file
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ File 打包完成"
|
||||
else
|
||||
echo "✗ File 打包失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 2: 复制 jar 文件
|
||||
echo ""
|
||||
echo "步骤 2: 复制 File jar 文件..."
|
||||
cp "$SCRIPT_DIR/../../ruoyi-modules/ruoyi-file/target/ruoyi-modules-file.jar" "$DOCKER_DIR/ruoyi/modules/file/jar/"
|
||||
echo "✓ jar 文件复制完成"
|
||||
|
||||
# 步骤 3: 构建 File 镜像
|
||||
echo ""
|
||||
echo "步骤 3: 构建 File 镜像..."
|
||||
cd "$DOCKER_DIR"
|
||||
docker-compose build --no-cache ruoyi-modules-file
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ File 镜像构建完成"
|
||||
else
|
||||
echo "✗ File 镜像构建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 3.5: 检测环境并导入镜像(仅 Minikube 需要)
|
||||
echo ""
|
||||
if command -v minikube &> /dev/null && minikube status &> /dev/null; then
|
||||
echo "检测到 Minikube 环境,导入镜像(可能需要 1-2 分钟)..."
|
||||
|
||||
# 先导出镜像到临时文件
|
||||
TEMP_IMAGE="/tmp/ruoyi-modules-file-runtime-$$.tar"
|
||||
echo "导出镜像到临时文件..."
|
||||
docker save -o "$TEMP_IMAGE" ruoyi-modules-file-runtime
|
||||
|
||||
# 导入到 Minikube
|
||||
echo "导入镜像到 Minikube..."
|
||||
minikube image load "$TEMP_IMAGE" &
|
||||
PID=$!
|
||||
|
||||
# 显示进度,最多等待 5 分钟
|
||||
COUNT=0
|
||||
MAX_COUNT=150
|
||||
while kill -0 $PID 2>/dev/null; do
|
||||
echo -n "."
|
||||
sleep 2
|
||||
COUNT=$((COUNT + 1))
|
||||
if [ $COUNT -ge $MAX_COUNT ]; then
|
||||
kill $PID 2>/dev/null
|
||||
echo ""
|
||||
echo "✗ 镜像导入超时(超过 5 分钟)"
|
||||
rm -f "$TEMP_IMAGE"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
wait $PID
|
||||
EXIT_CODE=$?
|
||||
|
||||
echo ""
|
||||
if [ $EXIT_CODE -eq 0 ]; then
|
||||
echo "✓ 镜像导入到 Minikube 完成"
|
||||
else
|
||||
echo "✗ 镜像导入失败"
|
||||
rm -f "$TEMP_IMAGE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 清理临时文件
|
||||
rm -f "$TEMP_IMAGE"
|
||||
else
|
||||
echo "检测到 k3s/k8s 环境,跳过镜像导入(使用本地 Docker 镜像)"
|
||||
fi
|
||||
|
||||
# 步骤 4: 部署到 K8s
|
||||
echo ""
|
||||
echo "步骤 4: 部署到 Kubernetes..."
|
||||
cd "$SCRIPT_DIR"
|
||||
kubectl apply -f pvc.yaml
|
||||
kubectl apply -f service.yaml
|
||||
kubectl apply -f deployment.yaml
|
||||
|
||||
# 步骤 5: 等待 Pod 启动
|
||||
echo ""
|
||||
echo "步骤 5: 等待 File Pod 启动..."
|
||||
kubectl wait --for=condition=ready pod -l app=file -n ruoyi --timeout=300s
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "✗ File Pod 启动超时"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查部署状态
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "检查部署结果"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查 Pod 状态
|
||||
echo "检查 File Pod 状态..."
|
||||
POD_STATUS=$(kubectl get pods -n ruoyi -l app=file -o jsonpath='{.items[0].status.phase}')
|
||||
if [ "$POD_STATUS" == "Running" ]; then
|
||||
echo "✓ File Pod 运行正常"
|
||||
kubectl get pods -n ruoyi -l app=file
|
||||
else
|
||||
echo "✗ File Pod 状态异常: $POD_STATUS"
|
||||
kubectl get pods -n ruoyi -l app=file
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 检查 Service 状态
|
||||
echo "检查 File Service 状态..."
|
||||
if kubectl get svc ruoyi-modules-file -n ruoyi &> /dev/null; then
|
||||
echo "✓ File Service 创建成功"
|
||||
kubectl get svc -n ruoyi ruoyi-modules-file
|
||||
else
|
||||
echo "✗ File Service 创建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 检查 PVC 状态
|
||||
echo "检查 File PVC 状态..."
|
||||
PVC_STATUS=$(kubectl get pvc -n ruoyi file-upload-pvc -o jsonpath='{.status.phase}')
|
||||
if [ "$PVC_STATUS" == "Bound" ]; then
|
||||
echo "✓ File PVC 绑定成功"
|
||||
kubectl get pvc -n ruoyi file-upload-pvc
|
||||
else
|
||||
echo "✗ File PVC 状态异常: $PVC_STATUS"
|
||||
kubectl get pvc -n ruoyi file-upload-pvc
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "✓ File 部署完成!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "访问信息:"
|
||||
echo " Service: ruoyi-modules-file.ruoyi.svc.cluster.local"
|
||||
echo " 端口: 9300"
|
||||
echo " 上传路径: /var/lib/uploadPath"
|
||||
echo ""
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: file
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: file
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: file
|
||||
spec:
|
||||
containers:
|
||||
- name: file
|
||||
image: ruoyi-modules-file-runtime
|
||||
imagePullPolicy: Never
|
||||
ports:
|
||||
- containerPort: 9300
|
||||
name: http
|
||||
volumeMounts:
|
||||
- name: upload-path
|
||||
mountPath: /var/lib/uploadPath
|
||||
volumes:
|
||||
- name: upload-path
|
||||
persistentVolumeClaim:
|
||||
claimName: file-upload-pvc
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: file-upload-pvc
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 10Gi
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: ruoyi-modules-file
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 9300
|
||||
targetPort: 9300
|
||||
name: http
|
||||
selector:
|
||||
app: file
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
# 11-Monitor 部署
|
||||
|
||||
## 说明
|
||||
|
||||
部署 Monitor 监控服务模块,提供服务监控功能。
|
||||
|
||||
## 部署流程
|
||||
|
||||
1. **打包 Monitor** - 执行 bin/package.sh ruoyi-visual-monitor
|
||||
2. **复制 jar** - 复制 jar 文件到 docker/ruoyi/visual/monitor/jar
|
||||
3. **构建镜像** - 使用 docker-compose 构建 Monitor 镜像
|
||||
4. **导入镜像** - 如果是 Minikube 环境,自动导入镜像
|
||||
5. **部署到 K8s** - 部署 Service 和 Deployment
|
||||
6. **等待启动** - 等待 Pod 就绪
|
||||
|
||||
## 配置说明
|
||||
|
||||
- **Service 名称**: ruoyi-visual-monitor
|
||||
- **端口**: 9100
|
||||
- **镜像**: ruoyi-visual-monitor-runtime
|
||||
|
||||
## 文件说明
|
||||
|
||||
- `service.yaml` - Monitor Service 配置(ClusterIP)
|
||||
- `deployment.yaml` - Monitor Deployment 配置
|
||||
- `deploy.sh` - 一键部署脚本
|
||||
|
||||
## 部署步骤
|
||||
|
||||
```bash
|
||||
# 进入目录
|
||||
cd 11-monitor
|
||||
|
||||
# 执行部署脚本
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
## 访问
|
||||
|
||||
```bash
|
||||
# 集群内访问
|
||||
ruoyi-visual-monitor.ruoyi.svc.cluster.local:9100
|
||||
```
|
||||
|
|
@ -0,0 +1,164 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# 保存脚本所在目录的绝对路径
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
DOCKER_DIR="$SCRIPT_DIR/../../docker"
|
||||
|
||||
echo "=========================================="
|
||||
echo "部署 Monitor"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查是否需要清理旧部署
|
||||
echo ""
|
||||
echo "检查现有 Monitor 部署..."
|
||||
if kubectl get deployment monitor -n ruoyi &> /dev/null; then
|
||||
echo "⚠️ 检测到已存在的 Monitor 部署,自动清理..."
|
||||
|
||||
echo "删除旧的 Monitor Deployment..."
|
||||
kubectl delete deployment monitor -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "删除旧的 Monitor Service..."
|
||||
kubectl delete service ruoyi-visual-monitor -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "等待资源清理完成..."
|
||||
sleep 5
|
||||
|
||||
echo "✓ 旧部署清理完成"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 步骤 1: 打包 Monitor
|
||||
echo "步骤 1: 打包 Monitor jar..."
|
||||
cd "$SCRIPT_DIR/../../bin"
|
||||
sh package.sh ruoyi-visual-monitor
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Monitor 打包完成"
|
||||
else
|
||||
echo "✗ Monitor 打包失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 2: 复制 jar 文件
|
||||
echo ""
|
||||
echo "步骤 2: 复制 Monitor jar 文件..."
|
||||
cp "$SCRIPT_DIR/../../ruoyi-visual/ruoyi-monitor/target/ruoyi-visual-monitor.jar" "$DOCKER_DIR/ruoyi/visual/monitor/jar/"
|
||||
echo "✓ jar 文件复制完成"
|
||||
|
||||
# 步骤 3: 构建 Monitor 镜像
|
||||
echo ""
|
||||
echo "步骤 3: 构建 Monitor 镜像..."
|
||||
cd "$DOCKER_DIR"
|
||||
docker-compose build --no-cache ruoyi-visual-monitor
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Monitor 镜像构建完成"
|
||||
else
|
||||
echo "✗ Monitor 镜像构建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 3.5: 检测环境并导入镜像(仅 Minikube 需要)
|
||||
echo ""
|
||||
if command -v minikube &> /dev/null && minikube status &> /dev/null; then
|
||||
echo "检测到 Minikube 环境,导入镜像(可能需要 1-2 分钟)..."
|
||||
|
||||
# 先导出镜像到临时文件
|
||||
TEMP_IMAGE="/tmp/ruoyi-visual-monitor-runtime-$$.tar"
|
||||
echo "导出镜像到临时文件..."
|
||||
docker save -o "$TEMP_IMAGE" ruoyi-visual-monitor-runtime
|
||||
|
||||
# 导入到 Minikube
|
||||
echo "导入镜像到 Minikube..."
|
||||
minikube image load "$TEMP_IMAGE" &
|
||||
PID=$!
|
||||
|
||||
# 显示进度,最多等待 5 分钟
|
||||
COUNT=0
|
||||
MAX_COUNT=150
|
||||
while kill -0 $PID 2>/dev/null; do
|
||||
echo -n "."
|
||||
sleep 2
|
||||
COUNT=$((COUNT + 1))
|
||||
if [ $COUNT -ge $MAX_COUNT ]; then
|
||||
kill $PID 2>/dev/null
|
||||
echo ""
|
||||
echo "✗ 镜像导入超时(超过 5 分钟)"
|
||||
rm -f "$TEMP_IMAGE"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
wait $PID
|
||||
EXIT_CODE=$?
|
||||
|
||||
echo ""
|
||||
if [ $EXIT_CODE -eq 0 ]; then
|
||||
echo "✓ 镜像导入到 Minikube 完成"
|
||||
else
|
||||
echo "✗ 镜像导入失败"
|
||||
rm -f "$TEMP_IMAGE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 清理临时文件
|
||||
rm -f "$TEMP_IMAGE"
|
||||
else
|
||||
echo "检测到 k3s/k8s 环境,跳过镜像导入(使用本地 Docker 镜像)"
|
||||
fi
|
||||
|
||||
# 步骤 4: 部署到 K8s
|
||||
echo ""
|
||||
echo "步骤 4: 部署到 Kubernetes..."
|
||||
cd "$SCRIPT_DIR"
|
||||
kubectl apply -f service.yaml
|
||||
kubectl apply -f deployment.yaml
|
||||
|
||||
# 步骤 5: 等待 Pod 启动
|
||||
echo ""
|
||||
echo "步骤 5: 等待 Monitor Pod 启动..."
|
||||
kubectl wait --for=condition=ready pod -l app=monitor -n ruoyi --timeout=300s
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "✗ Monitor Pod 启动超时"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查部署状态
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "检查部署结果"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查 Pod 状态
|
||||
echo "检查 Monitor Pod 状态..."
|
||||
POD_STATUS=$(kubectl get pods -n ruoyi -l app=monitor -o jsonpath='{.items[0].status.phase}')
|
||||
if [ "$POD_STATUS" == "Running" ]; then
|
||||
echo "✓ Monitor Pod 运行正常"
|
||||
kubectl get pods -n ruoyi -l app=monitor
|
||||
else
|
||||
echo "✗ Monitor Pod 状态异常: $POD_STATUS"
|
||||
kubectl get pods -n ruoyi -l app=monitor
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 检查 Service 状态
|
||||
echo "检查 Monitor Service 状态..."
|
||||
if kubectl get svc ruoyi-visual-monitor -n ruoyi &> /dev/null; then
|
||||
echo "✓ Monitor Service 创建成功"
|
||||
kubectl get svc -n ruoyi ruoyi-visual-monitor
|
||||
else
|
||||
echo "✗ Monitor Service 创建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "✓ Monitor 部署完成!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "访问信息:"
|
||||
echo " Service: ruoyi-visual-monitor.ruoyi.svc.cluster.local"
|
||||
echo " 端口: 9100"
|
||||
echo ""
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: monitor
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: monitor
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: monitor
|
||||
spec:
|
||||
containers:
|
||||
- name: monitor
|
||||
image: ruoyi-visual-monitor-runtime
|
||||
imagePullPolicy: Never
|
||||
ports:
|
||||
- containerPort: 9100
|
||||
name: http
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: ruoyi-visual-monitor
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 9100
|
||||
targetPort: 9100
|
||||
name: http
|
||||
selector:
|
||||
app: monitor
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
# 12-Approval 部署
|
||||
|
||||
## 说明
|
||||
|
||||
部署 Approval 审批模块,提供审批流程管理功能。
|
||||
|
||||
## 部署流程
|
||||
|
||||
1. **打包 Approval** - 执行 bin/package.sh tuoheng-approval
|
||||
2. **复制 jar** - 复制 jar 文件到 docker/ruoyi/modules/approval/jar
|
||||
3. **构建镜像** - 使用 docker-compose 构建 Approval 镜像
|
||||
4. **导入镜像** - 如果是 Minikube 环境,自动导入镜像
|
||||
5. **部署到 K8s** - 部署 Service 和 Deployment
|
||||
6. **等待启动** - 等待 Pod 就绪
|
||||
|
||||
## 配置说明
|
||||
|
||||
- **Service 名称**: tuoheng-modules-approval
|
||||
- **端口**: 9201
|
||||
- **镜像**: tuoheng-modules-approval-runtime
|
||||
- **依赖**: Redis, MySQL
|
||||
|
||||
## 文件说明
|
||||
|
||||
- `service.yaml` - Approval Service 配置(ClusterIP)
|
||||
- `deployment.yaml` - Approval Deployment 配置
|
||||
- `deploy.sh` - 一键部署脚本
|
||||
|
||||
## 部署步骤
|
||||
|
||||
```bash
|
||||
# 进入目录
|
||||
cd 12-approval
|
||||
|
||||
# 执行部署脚本
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
## 访问
|
||||
|
||||
```bash
|
||||
# 集群内访问
|
||||
tuoheng-modules-approval.ruoyi.svc.cluster.local:9201
|
||||
```
|
||||
|
|
@ -0,0 +1,163 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# 保存脚本所在目录的绝对路径
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
DOCKER_DIR="$SCRIPT_DIR/../../docker"
|
||||
|
||||
echo "=========================================="
|
||||
echo "部署 Approval"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查是否需要清理旧部署
|
||||
echo ""
|
||||
echo "检查现有 Approval 部署..."
|
||||
if kubectl get deployment approval -n ruoyi &> /dev/null; then
|
||||
echo "⚠️ 检测到已存在的 Approval 部署,自动清理..."
|
||||
|
||||
echo "删除旧的 Approval Deployment..."
|
||||
kubectl delete deployment approval -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "删除旧的 Approval Service..."
|
||||
kubectl delete service tuoheng-modules-approval -n ruoyi --ignore-not-found=true
|
||||
|
||||
echo "等待资源清理完成..."
|
||||
sleep 5
|
||||
|
||||
echo "✓ 旧部署清理完成"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 步骤 1: 打包 Approval
|
||||
echo "步骤 1: 打包 Approval jar..."
|
||||
cd "$SCRIPT_DIR/../../bin"
|
||||
sh package.sh tuoheng-approval
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Approval 打包完成"
|
||||
else
|
||||
echo "✗ Approval 打包失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 2: 复制 jar 文件
|
||||
echo ""
|
||||
echo "步骤 2: 复制 Approval jar 文件..."
|
||||
cp "$SCRIPT_DIR/../../ruoyi-modules/tuoheng-approval/target/tuoheng-approval.jar" "$DOCKER_DIR/ruoyi/modules/approval/jar/"
|
||||
echo "✓ jar 文件复制完成"
|
||||
|
||||
# 步骤 3: 构建 Approval 镜像
|
||||
echo ""
|
||||
echo "步骤 3: 构建 Approval 镜像..."
|
||||
cd "$DOCKER_DIR"
|
||||
docker-compose build --no-cache tuoheng-modules-approval
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Approval 镜像构建完成"
|
||||
else
|
||||
echo "✗ Approval 镜像构建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 步骤 3.5: 检测环境并导入镜像(仅 Minikube 需要)
|
||||
echo ""
|
||||
if command -v minikube &> /dev/null && minikube status &> /dev/null; then
|
||||
echo "检测到 Minikube 环境,导入镜像(可能需要 1-2 分钟)..."
|
||||
|
||||
# 先导出镜像到临时文件
|
||||
TEMP_IMAGE="/tmp/tuoheng-modules-approval-runtime-$$.tar"
|
||||
echo "导出镜像到临时文件..."
|
||||
docker save -o "$TEMP_IMAGE" tuoheng-modules-approval-runtime
|
||||
|
||||
# 导入到 Minikube
|
||||
echo "导入镜像到 Minikube..."
|
||||
minikube image load "$TEMP_IMAGE" &
|
||||
PID=$!
|
||||
|
||||
# 显示进度,最多等待 5 分钟
|
||||
COUNT=0
|
||||
MAX_COUNT=150
|
||||
while kill -0 $PID 2>/dev/null; do
|
||||
echo -n "."
|
||||
sleep 2
|
||||
COUNT=$((COUNT + 1))
|
||||
if [ $COUNT -ge $MAX_COUNT ]; then
|
||||
kill $PID 2>/dev/null
|
||||
echo ""
|
||||
echo "✗ 镜像导入超时(超过 5 分钟)"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
wait $PID
|
||||
EXIT_CODE=$?
|
||||
|
||||
echo ""
|
||||
if [ $EXIT_CODE -eq 0 ]; then
|
||||
echo "✓ 镜像导入到 Minikube 完成"
|
||||
else
|
||||
echo "✗ 镜像导入失败"
|
||||
rm -f "$TEMP_IMAGE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 清理临时文件
|
||||
rm -f "$TEMP_IMAGE"
|
||||
else
|
||||
echo "检测到 k3s/k8s 环境,跳过镜像导入(使用本地 Docker 镜像)"
|
||||
fi
|
||||
|
||||
# 步骤 4: 部署到 K8s
|
||||
echo ""
|
||||
echo "步骤 4: 部署到 Kubernetes..."
|
||||
cd "$SCRIPT_DIR"
|
||||
kubectl apply -f service.yaml
|
||||
kubectl apply -f deployment.yaml
|
||||
|
||||
# 步骤 5: 等待 Pod 启动
|
||||
echo ""
|
||||
echo "步骤 5: 等待 Approval Pod 启动..."
|
||||
kubectl wait --for=condition=ready pod -l app=approval -n ruoyi --timeout=300s
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "✗ Approval Pod 启动超时"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查部署状态
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "检查部署结果"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查 Pod 状态
|
||||
echo "检查 Approval Pod 状态..."
|
||||
POD_STATUS=$(kubectl get pods -n ruoyi -l app=approval -o jsonpath='{.items[0].status.phase}')
|
||||
if [ "$POD_STATUS" == "Running" ]; then
|
||||
echo "✓ Approval Pod 运行正常"
|
||||
kubectl get pods -n ruoyi -l app=approval
|
||||
else
|
||||
echo "✗ Approval Pod 状态异常: $POD_STATUS"
|
||||
kubectl get pods -n ruoyi -l app=approval
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
# 检查 Service 状态
|
||||
echo "检查 Approval Service 状态..."
|
||||
if kubectl get svc tuoheng-modules-approval -n ruoyi &> /dev/null; then
|
||||
echo "✓ Approval Service 创建成功"
|
||||
kubectl get svc -n ruoyi tuoheng-modules-approval
|
||||
else
|
||||
echo "✗ Approval Service 创建失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "✓ Approval 部署完成!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "访问信息:"
|
||||
echo " Service: tuoheng-modules-approval.ruoyi.svc.cluster.local"
|
||||
echo " 端口: 9201"
|
||||
echo ""
|
||||
exit 0
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: approval
|
||||
namespace: ruoyi
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: approval
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: approval
|
||||
spec:
|
||||
containers:
|
||||
- name: approval
|
||||
image: tuoheng-modules-approval-runtime
|
||||
imagePullPolicy: Never
|
||||
ports:
|
||||
- containerPort: 9201
|
||||
name: http
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue