若依项目部署

之前一直负责公司的部署项目,自认为前公司的项目是那种介于微服务和大单体之间的那种,不算纯粹的微服务系统,最近也想学习一下开源的微服务项目,就选择了比较热门的若依项目,该项目有单体的和微服务的版本,ruoyi-cloud是微服务的,大家选择的时候注意一下。

1.准备工作

  1. 获取项目源码
    • 访问Gitee,下载RuoYi-Cloud项目代码。
  2. 环境准备
    • 确保您的系统已安装Docker。
    • 准备好Node.js用于前端开发, 根据ruoyi-ui目录中的readme文件执行,可直接执行下载依赖即可。下载完成后有个node_modules目录。根据readme文件中的启动命令启动前端项目后点击url能看到页面即可,报错先不管。

在项目的ReadMe文档中介绍了系统模块,其中注明了端口号的都是一个微服务,当然我不会启动所有的微服务。

对于中间件都是在docker中启动的

2.中间件安装

a.Nocos

docker pull nacos/nacos-server:v2.4.0
//先启动测试一下,最终启动需要连接mysql的
docker run -d \
  --name nacos-standalone \
  -p 8848:8848 \
  -e MODE=standalone \
  nacos/nacos-server:v2.4.0

使用这个http://localhost:8848/nacos 访问一下,如果能看到nacos页面就可以了;

b.MySQL

因为若依的nacos使用mysql存储配置,所以,我们在启动的时候要选择mysql

//docker 安装mysql脚本
docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=123456 \
  mysql:8.0

可以用客户端连接测试一下:user:root/password:123456

将nacos的conf文件夹中的mysql-schema.sql的文件在mysql中执行,主要是为了创建若依启动时nacos所需要的表;

这时将nacos重新启动并连接数据库:执行此处时先将ruoyi中的表和sql语句先执行,见启动RuoYi-Cloud项目第一步。


docker run -d \
  --name nacos-standalone-mysql \
  -p 8848:8848 \
  -p 9848:9848 \
  -p 9849:9849
  -e MODE=standalone \
  -e SPRING_DATASOURCE_PLATFORM=mysql \
  -e MYSQL_SERVICE_HOST={your mysql ip} \
  -e MYSQL_SERVICE_PORT=3306 \
  -e MYSQL_SERVICE_USER={your user name} \
  -e MYSQL_SERVICE_PASSWORD={your password} \
  -e MYSQL_SERVICE_DB_NAME=ry-config \
  nacos/nacos-server:v2.4.0

//这个是我自己的配置
docker run \
  --name nacos-security-standalone-mysql \
  -p 8848:8848 \
  -p 9848:9848 \
  -p 9849:9849 \
  -e MODE=standalone \
  -e SPRING_DATASOURCE_PLATFORM=mysql \
  -e MYSQL_SERVICE_HOST=192.168.5.71 \
  -e MYSQL_SERVICE_PORT=3306 \
  -e MYSQL_SERVICE_USER=root \
  -e MYSQL_SERVICE_PASSWORD=123456 \
  -e MYSQL_SERVICE_DB_NAME=ry-config \
  nacos/nacos-server:v2.4.0

映射9848和9849这两个端口号是为了grpc调用。

⚠️注意:ip不能是127.0.0.1,因为在nacos的容器中访问127.0.0.1是该容器本身,该容器中是没有mysql的。ip可以配置成mysql的容器所在的物理机ip。

c.redis

docker run -d --name redis -p 6379:6379 redis:latest

3.启动RuoYi-Cloud项目

部署项目要从底层开始,例如先从mysql,redis这些底层依赖开始部署。

a.执行sql语句[在项目中的sql目录下]

⚠️若依没有添加数据库名,但是在nacos配置ruoyi-system-dev.yml文件中可以查看,库名为ry-cloud。quartz.sql文件也是基于ry-cloud库的。

修改若依配置的mysql密码,若依中的配置的密码是password。

b.启动gateway服务

这个服务在启动时,因为和nacos server的版本存在兼容性问题,所以会出现如下错误:

Nacos注册失败:Client not connected,current status:STARTING

解决的话就是将SprinCloudAlibaba的版本从2021.0.6.1替换成2.2.6.RELEASE启动即可成功。后来我直接换成SpringBoot3启动还是报错,换成2.2.6.RELEASE版本就可以。后来我在官网发现2.0以上的nacos使用gRpc 的 9848和9849端口调用,解决的话是在容器启动时候暴露这两个端口号即可。

然后依次将所有的项目启动:image-20250809164756480

有端口号的是run模式启动,没有的是debug模式启动。

4.测试访问

image-20250809165016656

5.云上部署

ToDo…