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-gatewayruoyi-authruoyi-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

4、结语

posted @ 2023-02-15 19:38  wuxin001  阅读(495)  评论(0编辑  收藏  举报