Ruoyi-Cloud部署在虚拟机
1、第一步拉取代码
git clone https://gitee.com/y_project/RuoYi-Cloud.git
2、打包前端项目
- 安装前检查 Node 是否安装
- 注意不要安装版本太高!最好选择 16.x版本 , 下载
- 下载依赖
- 打包
下载Node
注意配置Node环境变量,配置完毕后,之前打开的 cmd 窗口要关闭才能生效!
下载依赖 执行 \ruoyi-ui\bin
目录下的脚本
.\ruoyi-ui\bin\package.bat
打包 \ruoyi-ui\bin
目录下的脚本
.\ruoyi-ui\bin\build.bat
3、后端服务Java接口打包
- 修改 host 地址
- 执行
bin
目录下的clean.bat
- 打包,执行
bin
目录下的package.bat
修改 host 地址,将 host 地址修改为对应在服务器上部署的 服务名
例如修改 ruoyi-modules-system
服务
修改之前
# 未修改之前
discovery:
# 服务注册地址
server-addr: localhost:8848
config:
# 配置中心地址
server-addr: localhost:8848
修改之后
discovery:
# 服务注册地址
server-addr: ruoyi-nacos:8848
config:
# 配置中心地址
server-addr: ruoyi-nacos:8848
其他服务参照这个操作 修改!
一定要对应 docker-compose.yml
文件中的服务名 !!!
注意检查 mvn 命令是否生效,如果不生效请配置maven环境变量
清除之前缓存,否则会导致修改配置不生效
.\bin\clean.bat
打包
.\bin\clean.bat
4、上传到服务器
将之前打包好的各个项目打包拷贝到 docker
目录
可以直接 执行拷贝脚本
.\docker\copy.sh
注意:官方给的
copy.sh
脚本拷贝命令可能导致一些文件拷贝不全
- 检查 sql 脚本是否拷贝完全 参考
sql/*sql
- 检查
docker/nginx/html/dist
目录中是否含有文件 参考ruoyi-ui/dist
如果 IDE 中找不到,是因为 IDE 中屏蔽了,可以到本地资源管理器,的该目录下拷贝到对应文件加中 - 注意
jar
包是否打包完全到/docker/ruoyi/*/jar/
目录下
下面给出参考图
将项目中整个docker目录上传到服务器,例如 /usr/local/project/ruoyi-cloud
完毕之后将 docker
文件加上传到服务器中,接下来就是部署了
5、项目部署
1、安装docker和docker-compose
补充:
1、添加 docker 镜像源
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://ezs5jiab.mirror.aliyuncs.com"]
}
重启生效
systemctl daemon-reload
systemctl restart docker
2、 官方 docker-compose 安装有点慢,执行这个命令可能快点
curl -SL https://get.daocloud.io/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
不要忘了安装完毕之后給文件添加可执行命令
chmod +x /usr/local/bin/docker-compose
检查是否安装成功,输出对应版本号就是安装成功了
docker-compose version
2、清空安装环境
为什么要清空之前的镜像?
本人安装之前吃过亏,之前安装失败没有修改本地host,导致部署失败。
修改之后在上传,如果不删除之前的容器和镜像,会继续部署失败!😭
因为 docker build 之前检查是否有这个镜像
如果有这个镜像会基于这个镜像,构建容器,结果当然是失败了!🤣
没有才会重新构建容器
删除容器
查看是否有容器
docker ps -a
如果有容器执行该命令,没有就不要执行了
docker rm -f $(docker ps -aq)
删除镜像
通过docker images
查看已经安装的镜像
docker images
注意不建议删除 nacos、mysql、redis,nginx镜像
如下删除红框中的容器
REPOSITORY TAG IMAGE ID CREATED SIZE
docker-ruoyi-modules-system latest c755d24e3e7d 4 hours ago 379MB
docker-ruoyi-gateway latest 8976e5938ec7 4 hours ago 372MB
docker-ruoyi-auth latest 99f438b7efb7 4 hours ago 364MB
nginx latest 605c77e624dd 13 months ago 141MB
redis latest 7614ae9453d1 14 months ago 113MB
mysql 5.7 c20987f18b13 14 months ago 448MB
mysql 8.0 3218b38490ce 14 months ago 516MB
nacos/nacos-server latest bdf60dc2ada3 18 months ago 1.05GB
镜像删除
docker rmi -f 镜像ID
例如删除 三个 ruoyi-gateway
、ruoyi-auth
、ruoyi-modules-system
三个容器镜像
docker rmi -f c755d24e3e7d 8976e5938ec7 99f438b7efb7
3 、docker-compse 构建服务
注意以下命令都是在 刚刚上传docker文件夹下
-bash-4.2# ls
copy.sh deploy.sh docker-compose.yml mysql nacos nginx redis ruoyi
-bash-4.2# pwd
/root/docker
1、启动 基础服务
- MySQL服务
- Redis 服务
- Nacos 服务
docker-compose up -d ruoyi-mysql ruoyi-redis ruoyi-nacos
不要急于开启其他服务,服务开启后检查 MySQL 中是否执行了 sql 脚本
也可以通过 mysql 可视化工具操作,如果没有对应数据库,可导入之前的 sql 脚本
如果没有可视化工具,可通过容器命令进入数据库容器操作安装脚本
docker exec -it ruoyi-mysql mysql -uroot -ppassword
create datebase ry-config if not exist charset uft8
source /tmp/*sql
exit
exit
数据库没问题之后检查 nacos 服务是否可用
docker-compose logs -f ruoyi-nacos
注意:如果服务报错 xxx NoDataSource xxx 之类错误,大概率是数据库没有对应表或者数据库连接不上
例如
Caused by: java.lang.IllegalStateException: No DataSource set
at org.springframework.util.Assert.state(Assert.java:73)
at org.springframework.jdbc.support.JdbcAccessor.obtainDataSource(JdbcAccessor.java:77)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:371)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:452)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:462)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:473)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:480)
at com.alibaba.nacos.config.server.service.repository.extrnal.ExternalStoragePersistServiceImpl.findConfigMaxId(ExternalStoragePersistServiceImpl.java:658)
at com.alibaba.nacos.config.server.service.dump.processor.DumpAllProcessor.process(DumpAllProcessor.java:51)
at com.alibaba.nacos.config.server.service.dump.DumpService.dumpConfigInfo(DumpService.java:293)
at com.alibaba.nacos.config.server.service.dump.DumpService.dumpOperate(DumpService.java:205)
... 61 common frames omitted
此为数据库连接不上!数据库没问题,那么重启这个服务
docker-compose restart ruoyi-nacos
可在浏览器中检查是否可用 http://192.168.233.40:8848/nacos/
然后就是按照上图所示修改各个服务的配置文件,主要有
-
连接 mysql 的将 localhost:3360 ,修改为
mysql服务名:port
例如ruoyi-mysql:3306
注意: 如果不将 连接地址URL 的
-
redis 同 上面 mysql 服务,将连接redis的,修改为
ruoyi-redis
-
其他服务同理
修改 redis 连接
修改 mysql 连接
修改 mysql useSSL=false
2、启动
- 网关服务
- 验证服务
- 核心服务
docker-compose up -d ruoyi-nginx ruoyi-gateway ruoyi-auth ruoyi-modules-system
检查是否能够连接服务 http://192.168.233.40:80/
后台
注意:如果获取失败 报错 404 或者其他错误,一定要耐心等待!配置生效有点慢
是在不行重启服务
docker-compose start ruoyi-gateway ruoyi-auth ruoyi-modules-system
3、启动次要服务 (由于测试,和虚拟机容量问题,这个步骤就不操作了,下面给出操作,不截图了)
- 代码生成器
- 任务调度
- 文件服务
- 系统监视
docker-compose up -d ruoyi-modules-gen ruoyi-modules-job ruoyi-modules-file ruoyi-visual-monitor
🧡4、一次性开启所有服务,不建议一次性开启这么多服务,对对服务器有一定压力!!!
docker-compose up -d