【docker快速部署微服务若依管理系统(RuoYi-Cloud)】

news2024/11/24 12:10:10

工作原因,需要一个比较完整的开源项目测试本公司产品。偶然发现RuoYi-Cloud非常适合,它有足够多的中间件,而且官方提供docker安装,但我本人在安装过程中遇到了很多坑,在这里记录一下防止下次会再次遇到。

项目地址

https://gitee.com/y_project/RuoYi-Cloud

环境

内存至少16G,处理器至少4核
内存小于16G,时间长了会导致响应过慢,经常出现响应超时的情况。

docker部署

  1. 把所有127.0.0.1和localhost全部代替为主机IP或者具体的服务名(如:ruoyi-mysql)。

      http://localhost:8080/swagger-ui/index.html -> http://[ip]:8080/swagger-ui/index.html
      http://localhost:8848/nacos - > http://[ip]:8848/nacos
      http://localhost:9100/login - > http://[ip]:9100/login
      127.0.0.1:9300 -> [ip]:9300
    
      127.0.0.1:8848\localhost:8848 -> ruoyi-nacos:8848
      localhost\n    port: 6379 -> ruoyi-redis\n    port: 6379
      localhost:3306 -> ruoyi-mysql:3306
    

一次性脚本

find . -type f -exec sed -i 's#http://localhost:8080/swagger-ui/index.html#http://10.0.2.52:8080/swagger-ui/index.html#g' {} +
find . -type f -exec sed -i 's#http://localhost:8848/nacos#http://10.0.2.52:8848/nacos#g' {} +
find . -type f -exec sed -i 's#http://localhost:9100/login#http://10.0.2.52:9100/login#g' {} +
find . -type f -exec sed -i 's#127.0.0.1:9300#10.0.2.52:9300#g' {} +

find . -type f -exec sed -i 's#127.0.0.1:8848#ruoyi-nacos:8848#g' {} +
find . -type f -exec sed -i 's#localhost:8848#ruoyi-nacos:8848#g' {} +
echo "\要转译为\\\\"
find . -type f -exec sed -i 's#localhost\\n    port: 6379#ruoyi-redis\\n    port: 6379#g' {} +
find . -type f -exec sed -i 's#localhost:3306#ruoyi-mysql:3306#g' {} +

注意:10.0.2.52是我自己的物理机IP

图省事可以直接所有127.0.0.1和localhost全部代替为主机IP,但我为了模拟真实场景,使用的是服务名

  1. 编译后端代码
cd RuoYi-Cloud
mvn clean install
  1. 编译前端代码
cd ruoyi-ui
npm install
npm run build:prod
  1. 修改脚本copy.sh

进入目录

cd ../docker
vim copy.sh

  cp ../sql/ry_20230223.sql ./mysql/db
  cp ../sql/ry_config_20220929.sql ./mysql/db

改为

  cp ../sql/*.sql ./mysql/db
  1. 把前后端包,以及sql文件带到指定位置
sh copy.sh
  1. 修改docker-compose.yml
  • 有“build:”配置的服务,都要把“image:”给注释掉,否则“build:”是不生效的,走的还是“image:”,拉的是远程的镜像。
sed -i 's/    image:/    #image:/g' docker-compose.yml
  1. 运行基础服务
sh deploy.sh base

查看日志,可能会发现nacos会报错,是因为mysql没有完全启起来,重新启动nacos即可。

移动要全部运行完才能走下面的步骤

  1. 启动所有应用
docker-compose up -d
  1. 查看各个服务的状态
docker-compose ps
  1. 查看整体服务的日志
docker-compose logs -f

遇到的问题

  1. 字符集
vim windows.sh
:set ff=unix
:wq
  1. 安装docker-compose
yum remove python-pip
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python get-pip.py
pip install docker-compose
  1. docker-compose up -d失败
    报错信息
ERROR [ruoyi-gateway 1/4] FROM docker.io/library/openjdk:8-jre@sha256……
……
failed to solve: failed to read expected number of bytes: unexpected EOF

需要手动pull镜像,原因未知,可能跟源有关

docker pull openjdk:8-jre

成功图:
在这里插入图片描述
在这里插入图片描述
如有问题,可以来交流交流:
手机\微信号:15385125253
如有帮助的可以支持一下:

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/988660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV 01(图像加载与显示)

一、机器视觉 现在说的机器视觉(Machine Vision)一般指计算机视觉(Computer Vision), 简单来说就是研究如何使机器看懂东西。就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传…

关于elementui表单验证数字的问题

千里之行始于足下 熟能生巧,不熟怎么生巧 最近编写项目时候遇到一个这样的问题,elementui 表单验证价格是否为数字, 正常来说只需要将规则写为如下 { required: true, type: number, message: "请填写正确的数字", trigger: "…

引爆用户参与:消息重弹,让您的推送不再被忽略

在当前各大APP拉新促活成本居高不下的大背景下,如何稳定存量用户、提升用户粘性就显得尤为关键。从促销活动到个性化推荐,从互动通知到功能提醒,消息推送已成为各大APP连接存量用户和目标市场之间的桥梁,通过点击推送,…

ADS1219芯片解读

使用10-kΩ热敏电阻的温度测量是使用比率测量实现的实现最佳精度的方法。模拟电源电压AVDD用作电阻器分压器配置中的热敏电阻,以及ADS1219的外部参考电压V REF。 ADS1219的输出代码和热敏电阻R热敏电阻之间的关系是通过以下方程式。公式 10将输入AIN0处的输入电压表…

全网超50万粉丝的Linux大咖良许,出书了!

全网超50万粉丝的Linux大咖良许 出书了! 今天我们要说的就是这本由Linux领域头部号主,良许老师编写的这本《速学Linux:系统应用从入门到精通》 如果你是刚开始学习Linux的小白同学,相信你已经体会到与学习一门编程语言相比&…

【源码解读】VUE2.0和VUE3.0响应式区别?

数据劫持的目的 VUE2.0和VUE3.0实现响应式的底层逻辑,是对数据做劫持,为什么要劫持数据呢?是因为,劫持数据后才可以,在更改数据同时对页面进行重新渲染,从而达到响应式。 VUE3.0响应原理 VUE3.0使用了ES…

适配器模式:如何让不兼容的接口变得兼容

在软件开发中,我们经常会遇到这样的情况:我们需要使用一个现有的类或者接口,但它与我们系统的目标接口不兼容,而我们又不能修改它。这时候,我们该怎么办呢?大多数情况下我们都可以使用适配器模式来解决这个…

hutool的HttpRequest.post的使用-包括上传文档等多个传参【总结版本】

首先hutool已经为我们封装好了远程调用的接口,我们只要将对应的传参和方式对应填写即可 hutool官方文档 1实际应用 post 常见的使用json传参,contend type为application/json RequestMapping("login") ResponseBody public static String s…

中国人大与加拿大女王大学中外合作办学金融硕士——学习是你世界的圆吗

有人说,可以把每个人的世界比作一个圆,学习是半径,半径越大,拥有的世界就越广阔。你认同这种观点吗,金融领域的你有想过拓宽知识的边界吗?来人大女王中外合作办学金融硕士项目在职读研,超越自我…

【多线程】线程 与 进程

线程 与 进程 一. 进程1. 操作系统2. 什么是进程/任务(Process/Task)3. 为什么要有进程3. 操作系统怎样管理进程4. 进程控制块抽象(PCB Process Control Block)5. 进程调度6. 内存分配 —— 内存管理(Memory Manage)7. 进程间通信…

【C++】匿名对象 | explicit | static静态成员 | 友元

匿名对象 有些情况下,我们创建变量只是临时用一用,以后不会再用到了。这时,如果创建变量还要起名字,是不是很多余? 对此,C引入了 匿名对象 供临时使用。 例如:如果我们创建对象slt&#xff0c…

什么是主动元数据管理?有何优势?

元数据是描述数据的数据,它提供数据的来源、含义、位置、所有权和创建等信息,主要用于跟踪、分类和分析。 元数据管理则是对元数据的创建、存储、整合、控制的一整套流程,是数据治理过程的一部分,能够支持基于元数据的相关需求和…

NFT Insider#106:The Sandbox 与 Light Matrix 以及鲁比尼拳击场达成战略合作

引言:NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品,浓缩每周NFT新闻,为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据,艺术新闻类,游戏新闻类,虚拟世界类&#…

Android12之解析/proc/pid进程参数(一百六十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

python通过tkinter制作词云图工具

一、基本功能 1.采取上传文本文档(仅支持.txt格式)的方式统计词频 2.背景图形样式可选择已经设定好的,也可选择本地上传的(支持.png .jpg .jpeg格式) 3.本地上传的图片需要进行抠图处理,并将抠图结果保存…

大乘数法 -Java

题目链接:https://www.nowcoder.com/practice/c4c488d4d40d4c4e9824c3650f7d5571?tpId196&tqId37177&rp1&ru/exam/company&qru/exam/company&sourceUrl%2Fexam%2Fcompany&difficultyundefined&judgeStatusundefined&tags&titl…

SAP 批量删除变式

使用事务码se38进入变式,通过搜索帮助选中一个变式,点击显示。 点击目录,会显示所有的变式名称。 会显示当前程序的所有变式,然后点击删除按钮,选择需要删除的变式。

CVPR2023 RIFormer, 无需TokenMixer也能达成SOTA性能的极简ViT架构

编辑 | Happy 首发 | AIWalker 链接 | https://mp.weixin.qq.com/s/l3US8Dsd0yNC19o7B1ZBgw project, paper, code Token Mixer是ViT骨干非常重要的组成成分,它用于对不同空域位置信息进行自适应聚合,但常规的自注意力往往存在高计算复杂度与高延迟问题。…

FP130A 封装SOT23-5L 轨道电流测量IC

FP130A 封装SOT23-5L 轨道电流测量IC 一般说明 FP130A是一种宽共模范围高侧轨电流测量IC。它适用于电源系统,如电池充电器或开关电源的应用。它包括一个差分输入放大器和一个具有发射极输出的NPN晶体管。有三个外部电阻,轨道电流信号可以很容易地转换为I…

VR软件与管理后台的协议(微信扫码)

一、微信扫码登录 1、设计流程: ①、VR软件界面生成二维码,二维码中携带跳转小程序的链接及设备号、公司ID;用户通过扫码进入微信小程序点击界面一键启动,开始完善个人信息。 ②、用户点击一键启动,用户信息的授权状态…