使用docker-compose部署rouyi-cloud

本文详细描述了在CentOS7环境中使用docker和docker-compose部署Ruoyi应用的过程,包括安装docker、docker-compose,以及如何配置MySQL、Nacos、Redis等服务,以及必要的SQL脚本导入和微服务配置调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

仅供学习实践。
若依系统docker-compose部署
以下命令适用于CentOS7.x版本,我的实验环境为虚拟机。

一、安装docker

不赘述

二、安装docker-compose

不赘述

三、Ruoyi部署

  1. 获取Ruoyi部署文件

    获取地址:https://gitee.com/y_project/RuoYi-Cloud/tree/master/docker

    目录结构如下:

    ├── docker
    │   ├── copy.sh
    │   ├── deploy.sh
    │   ├── docker-compose.yml
    │   ├── mysql
    │   │   ├── conf
    │   │   ├── data
    │   │   ├── db
    │   │   ├── dockerfile
    │   │   └── logs
    │   ├── nacos
    │   │   ├── conf
    │   │   ├── dockerfile
    │   │   └── logs
    │   ├── nginx
    │   │   ├── conf
    │   │   ├── conf.d
    │   │   ├── dockerfile
    │   │   ├── html
    │   │   └── logs
    │   ├── redis
    │   │   ├── conf
    │   │   ├── data
    │   │   └── dockerfile
    │   └── ruoyi
    │       ├── auth
    │       ├── gateway
    │       ├── modules
    │       └── visual
    
  2. 下载依赖镜像

    依赖镜像名称可以从docker/docker-compose.yaml文件中获取:

    [root@localhost docker]# cat docker-compose.yml | grep image:
        image: nacos/nacos-server
        image: mysql:5.7
        image: redis
        image: nginx
    

    下载镜像,执行命令:

    docker pull nacos/nacos-server
    docker pull mysql:5.7
    docker pull redis
    docker pull nginx
    
  3. 启动Ruoyi基础服务

    脚本授权:

    cd docker
    chmod +x deploy.sh
    

    启动基础服务:

    ./deploy.sh base
    

    检查启动情况:

    # docker ps
    CONTAINER ID   IMAGE                         COMMAND                  CREATED       STATUS       PORTS                                                                                                      NAMES
    f3e908b5989d   mysql:5.7                     "docker-entrypoint.s…"   6 hours ago   Up 6 hours   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp                                                       ruoyi-mysql
    090a066f03f8   redis                         "docker-entrypoint.s…"   6 hours ago   Up 6 hours   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp                                                                  ruoyi-redis
    
    

    正常情况redismysql服务是正常的,nacos启动失败,暂时不用管。

  4. 导入Ruoyi SQL脚本

    nacos脚本复制到mysql容器:

    cd mysql/db/
    docker cp ry_20230706.sql f3e908b5989d:/
    docker cp ry_config_20220929.sql f3e908b5989d:/
    

    进入mysql容器,连接mysql服务

    # docker exec -it f3e908b5989d bash
    
    root@f3e908b5989d:/# mysql -uroot -ppassword
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 41
    Server version: 5.7.36 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2021, Oracle and/or its affiliates.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> 
    

    创建nacos库,导入SQL脚本:

    create database `ry-config` character set utf8 collate utf8_general_ci;
    
    use ry-cloud;
    source /ry_20230706.sql;
    
    use ry-config;
    source /ry_config_20220929.sql;
    
    exit
    

    使用exit退出mysql客户端,再次使用exit退出容器。

  5. 重启nacos

    执行命令查询启动失败的nacos容器ID:

    docker ps -a
    # 返回
    CONTAINER ID   IMAGE
    e0e44800a523   nacos/nacos-server 
    

    重启nacos

    docker restart e0e44800a523
    

    观察nacos日志,正常nacos可以启动成功:

    docker logs e0e44800a523
    
  6. 登录nacos修改Ruoyi微服务配置

    通过http://虚机IP:8848/nacos访问nacos页面(nacos/nacos):

    修改ruoyi-gateway-dev.yml配置:

    spring:
      redis:
        host: localhost #改为虚机IP
        port: 6379
        password:
    

    修改ruoyi-auth-dev.yml配置:

    spring:
      redis:
        host: localhost #改为虚机IP
        port: 6379
        password:
    

    修改ruoyi-system-dev.yml配置:

    spring:
      redis:
        host: localhost #改为虚机IP
        port: 6379
        password:
        
        ...
        
          datasource:
              master:
                driver-class-name: com.mysql.cj.jdbc.Driver
                #改为虚机IP
                url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                username: root
                password: password
    

    修改ruoyi-gen-dev.yml配置:

    spring:
      redis:
        host: localhost #改为虚机IP
        port: 6379
        password:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        # #改为虚机IP
        url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        username: root
        password: password
    

    修改ruoyi-job-dev.yml配置:

    spring:
      redis:
        host: localhost  #改为虚机IP
        port: 6379
        password: 
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        #改为虚机IP
        url: jdbc:mysql://localhost:3306/ry-cloud? useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        username: root
        password: password
    
  7. 修改Ruoyi jar包配置文件

    查找jar包:

    [root@localhost docker]# find ./ -name *.jar
    ./ruoyi/auth/jar/ruoyi-auth.jar
    ./ruoyi/gateway/jar/ruoyi-gateway.jar
    ./ruoyi/modules/file/jar/ruoyi-modules-file.jar
    ./ruoyi/modules/gen/jar/ruoyi-modules-gen.jar
    ./ruoyi/modules/job/jar/ruoyi-modules-job.jar
    ./ruoyi/modules/system/jar/ruoyi-modules-system.jar
    ./ruoyi/visual/monitor/jar/ruoyi-visual-monitor.jar
    

    安装vim、zip命令:

    yum install zip vim -y
    

    以第一个jar包为例./ruoyi/auth/jar/ruoyi-auth.jar,编辑jar包:

    vim ./ruoyi/auth/jar/ruoyi-auth.jar
    # 找到bootstrap.yml,将所有的localhost改为虚机IP地址
    ...
      cloud:
        nacos:
          discovery:
            # 服务注册地址
            server-addr: 192.168.22.134:8848
          config:
            # 配置中心地址
            server-addr: 192.168.22.134:8848
            # 配置文件格式
            file-extension: yml
            # 共享配置
            shared-configs:
              - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
    ...
    

    其它jar包修改过程同理,不在赘述。

  8. 启动Ruoyi微服务

    [root@localhost docker]# ./deploy.sh modules
    

    正常情况,会启动:nginx,docker_ruoyi-modules-system,docker_ruoyi-auth,docker_ruoyi-gateway4个容器进程:

    [root@localhost docker]# docker ps 
    CONTAINER ID   IMAGE                         COMMAND                  CREATED       STATUS       PORTS                                                                                                      NAMES
    fcdbd6c56ab4   keking/kkfileview             "java -Dfile.encodin…"   4 hours ago   Up 4 hours   0.0.0.0:8012->8012/tcp, :::8012->8012/tcp                                                                  ecstatic_jones
    127ea30c521d   nginx                         "/docker-entrypoint.…"   6 hours ago   Up 6 hours   0.0.0.0:80->80/tcp, :::80->80/tcp                                                                          ruoyi-nginx
    fb72aea1d703   docker_ruoyi-modules-system   "java -jar ruoyi-mod…"   6 hours ago   Up 6 hours   0.0.0.0:9201->9201/tcp, :::9201->9201/tcp                                                                  ruoyi-modules-system
    75ebd2c9118a   docker_ruoyi-auth             "java -jar ruoyi-aut…"   6 hours ago   Up 6 hours   0.0.0.0:9200->9200/tcp, :::9200->9200/tcp                                                                  ruoyi-auth
    4bc210701adb   docker_ruoyi-gateway          "java -jar ruoyi-gat…"   6 hours ago   Up 6 hours   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp                                                                  ruoyi-gateway
    e0e44800a523   nacos/nacos-server            "bin/docker-startup.…"   7 hours ago   Up 6 hours   0.0.0.0:8848->8848/tcp, :::8848->8848/tcp, 0.0.0.0:9848-9849->9848-9849/tcp, :::9848-9849->9848-9849/tcp   ruoyi-nacos
    f3e908b5989d   mysql:5.7                     "docker-entrypoint.s…"   7 hours ago   Up 6 hours   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp                                                       ruoyi-mysql
    090a066f03f8   redis                         "docker-entrypoint.s…"   7 hours ago   Up 6 hours   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp                                                                  ruoyi-redis
    
  9. 修改Nginx前端文件位置

    官方镜像中提供的Ruoyi 前端页面位置有问题,访问Ruoyi前端会返回403,需要进入容器内部修改前端文件位置:

    docker exec -it 127ea30c521d bash
    cd /home/ruoyi/projects/ruoyi-ui/dist/
    mv ./* ../
    

    将前端页面上移一层目录。也可以通过改nginx配置解决该问题(未尝试)。

  10. 访问Ruoyi地址

    关闭防火墙等

    systemctl stop firewalld
    setenforce 0
    

    浏览器访问前端地址:

    http://虚机IP

    admin/admin123

四、参考资料

  1. http://doc.ruoyi.vip/ruoyi-cloud/cloud/dokcer.html#%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2
### RuoYi 集成 DataEase 实现数据可视化嵌入报表分析 RuoYi 是一款基于 Spring Boot 和 Vue 的开源前后端分离快速开发框架,而 DataEase 则是一款支持多种数据源接入并提供强大数据分析能力的开源 BI 工具。两者结合可以为企业级应用提供更强大的功能扩展。 #### 一、技术背景概述 为了实现 RuoYi 中集成 DataEase 的功能,主要涉及以下几个方面: - **接口调用**:通过 RESTful API 或 GraphQL 接口访问 DataEase 提供的服务[^1]。 - **前端页面嵌入**:利用 iframe 或其他方式将 DataEase 的图表和仪表盘嵌入到 RuoYi 应用中[^2]。 - **权限管理同步**:确保两者的用户体系能够无缝对接,从而保障安全性和用户体验[^3]。 #### 二、具体实施方法 ##### 1. 后台服务配置 在 RuoYi 的后台服务中新增模块用于处理来自 DataEase 的请求。这通常包括创建新的控制器类以及定义相应的业务逻辑层和服务层组件。以下是示例代码片段: ```java @RestController @RequestMapping("/dataease") public class DataEaseController { @GetMapping("/dashboard/{id}") public String getDashboard(@PathVariable("id") Integer id) { // 调用 DataEase API 获取指定 ID 的看板信息 return "Redirect to dashboard URL with given ID"; } } ``` 上述代码展示了如何设置一个简单的路由来获取特定编号的数据面板链接[^4]。 ##### 2. 前端展示调整 对于前端部分,则需修改现有的 HTML 文件或者 Vue 组件文件,在适当位置加入如下所示的 iframe 标签以加载远程资源: ```html <template> <div> <!-- 其他 UI 元素 --> <iframe :src="`${baseUrl}/api/dashboards/${dashboardId}`" width="800px" height="600px"></iframe> </div> </template> <script> export default { data() { return { baseUrl: 'http://your-dataease-server', dashboardId: 1 }; }, }; </script> ``` 这里假设 `baseUrl` 指向实际部署好的 DataEase 实例地址;同时注意替换变量中的占位符为你自己的真实值[^5]。 ##### 3. 权限控制机制设计 考虑到安全性因素,建议采用 OAuth2.0 协议或者其他类似的认证授权方案完成跨平台的身份验证过程。这样不仅可以保护敏感操作免受未授权访问的影响,还能简化多系统间协作流程[^6]。 #### 总结说明 综上所述,要成功把 DataEase 功能融入至 Ruoyi 平台上,需要从多个角度出发进行全面规划和技术选型工作。只有这样才能构建起既满足当前需求又具备良好可维护性的解决方案。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值