Docker容器化部署若依微服务ruoyi-cloud项目

这篇具有很好参考价值的文章主要介绍了Docker容器化部署若依微服务ruoyi-cloud项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系统环境

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

接下来的内容以 Ubuntu 22.04.1 操作系统为例。

下载安装Docker

Ubuntu

hi@hi-IdeaCentre-GeekPro-15ICK:~$ sudo su
[sudo] hi 的密码: 
root@hi-IdeaCentre-GeekPro-15ICK:/home/hi# docker ps
找不到命令 “docker”,但可以通过以下软件包安装它:
apt install docker.io      # version 24.0.5-0ubuntu1~22.04.1, or
apt install podman-docker  # version 3.4.4+ds1-1ubuntu1.22.04.2

root@hi-IdeaCentre-GeekPro-15ICK:/home/hi# docker-compose 
找不到命令 “docker-compose”,但可以通过以下软件包安装它:
apt install docker-compose

验证版本信息

root@hi-IdeaCentre-GeekPro-15ICK:/home/hi# docker -v
Docker version 24.0.5, build 24.0.5-0ubuntu1~22.04.1

root@hi-IdeaCentre-GeekPro-15ICK:/home/hi# docker-compose -version
docker-compose version 1.29.2, build unknown

CentOS7

yum install -y yum-utils # yum工具集
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast # yum自动检测最快的安装源
yum install -y docker-ce
systemctl start docker 
docker version
[root@docker ~]# docker -v
Docker version 24.0.6, build ed223bc
docker pull hello-world
docker run hello-world

Note: 在 CentOS7 上使用上述 yum 方式安装的 Docker ,默认自带了Docker Compose Plugin,不过命令是 docker compose

[root@docker ~]# docker compose version
Docker Compose version v2.21.0

Docker基本操作

基础操作

  • docker pull
  • docker run
  • docker images
  • docker ps
  • docker logs
  • docker start
  • docker stop
  • docker restart
  • docker rmi
  • docker rm
  • docker exec
  • docker network
  • docker inspect
  • docker build

命令的具体用法可参考:云原生之容器编排实践-在CentOS7上安装使用Docker

批量操作

常用的批量操作命令:

# 停止所有运行中的容器
docker stop $(docker ps -q)

# 删除所有容器
docker rm $(docker ps -aq)

# 删除所有镜像
docker rmi $(docker images -aq)

# 强制删除所有未被容器使用的镜像
docker image prune -a -f

# 查看所有的无用卷
docker volume ls -qf dangling=true

# 删除无用卷
docker volume rm $(docker volume ls -qf dangling=true)

# 强制清理退出的容器快照
docker rm $(docker ps -q -f status=exited)

# 清理dangling image
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

下载若依微服务项目源码

如果是下载压缩包的方式,那么先初始化为 git 项目,初始提交,再切换分支,方便做版本管理。

Heartsuit@LAPTOP MINGW64 /d/Java/IdeaProjects/RuoYi-Cloud-master
$ git init
Initialized empty Git repository in D:/Java/IdeaProjects/RuoYi-Cloud-master/.git/

Heartsuit@LAPTOP MINGW64 /d/Java/IdeaProjects/RuoYi-Cloud-master (master)
$ git add .

Heartsuit@LAPTOP MINGW64 /d/Java/IdeaProjects/RuoYi-Cloud-master (master)
$ git commit -m "initial commit"

Heartsuit@LAPTOP MINGW64 /d/Java/IdeaProjects/RuoYi-Cloud-master (master)
$ git checkout -b deploy
Switched to a new branch 'deploy'

Heartsuit@LAPTOP MINGW64 /d/Java/IdeaProjects/RuoYi-Cloud-master (deploy)
$ git merge master
Already up to date.

修改配置

由于生产环境与开发环境的配置不同,实际操作时,一般先切换一个分支,专门用于生产环境的配置调整。

MySQL版本

根据需要修改 MySQL 版本,我们用的是 8.0 ,对应的文件: docker/mysql/dockerfile

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

修改docker-compose.yml:数据库版本、名称与密码;

对应的文件: docker/docker-compose.yml

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

Note:经测试,如果遇到在不同操作系统的宿主机上或者不同版本的 Dockerdocker-compose 下, docker-entrypoint-initdb.d 目录下的 SQL 语句并没有成功执行;原因是没有执行 MySQLDockerfilebuild 操作,导致并没有将 SQL 文件 COPYdocker-entrypoint-initdb.d 目录下。解决方法有两种:

  1. 删除docker-compose.ymlMySQLimage
  2. 增加SQL文件目录的挂载至/docker-entrypoint-initdb.d目录。

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

Nacos连接数据库地址

对应的文件: docker/nacos/conf/application.properties

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

Note:

  • 如果修改了docker-compose中数据库服务的服务名,那么上图中的数据库服务:ruoyi-mysql也要一并修改。
  • 另外,如果在生产环境下,发现Nacos持续报没有数据源:No Datasource Set,这时候可以尝试修改下connectTimeout的值,从1000改为10000,连接超时数据1s改为10s,这是以为网络延迟导致的Nacos无法在指定的时间内连接上MySQL

Nginx配置

对应的文件: docker/nginx/conf/nginx.conf ,根据实际服务名与端口号进行配置,我这里保持默认

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

Redis配置

对应的文件: docker/redis/conf/redis.conf我这里保持默认

导出数据库脚本放到mysql/db目录

可以使用若依自带的 SQL 脚本,或者导出自己的数据库表(包含建库、建表以及Insert语句),手动放到 docker/mysql/db 下。
Note:

  • docker-entrypoint-initdb.d这个目录下的SQL或者sh文件会在数据库初始化时执行;
  • 我这里修改了数据库的名称,分别为my-cloudmy-config

修改业务服务配置文件中连接Nacos的地址

根据实际要部署到生产环境的服务,修改对应的 bootstrap.yml 文件;这里以网关服务、认证服务以及系统服务为例,将其中的127.0.0.1改为 docker-composeNacos 的服务名: ruoyi-nacos

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

扩展docker-compose配置:新增MinIO服务

docker 目录下新建一个 minio 目录,在其中新增一个 dockerfile 文件与 confdata 目录(这几个文件暂时没用,后期可用于自定义配置);然后在 docker-compose.yml 中添加 ruoyi-minio 服务。

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

Note:在同一个 docker-compose.yml 中的服务启动后,默认是在同一个网络下,可以通过服务名称进行通信,因此如果这里的 minio 是单独部署,而不是配置在 docker-compose.yml 中,那么无法通过服务名称 ruoyi-minio 连接。

修改Nacos配置中心的数据库、缓存

作为配置中心, Nacos 中存放了各个服务的核心配置,eg:数据库连接、缓存、对象存储等,所以等一会儿 MySQLNacos 启动后,在业务服务启动之前,需要先将Nacos中的以下内容改为服务名称;这里以网关服务、认证服务以及系统服务为例。

  • Redis的localhost改为ruoyi-redis;
  • MySQL的localhost改为ruoyi-mysql;
  • 数据库名称与用户名、密码根据实际修改即可。

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

编译打包部署

前端

在项目根目录( package.json 所在目录)执行打包命令:

npm run build:prod

会生成 dist 的静态资源目录;我这里因为前后端分离开发,打包后直接将dist目录放到 docker/nginx/html/ 下。

后端

在项目根目录(最外层pom.xml所在目录)执行打包命令,这里为加快打包进度,跳过了单元测试:

mvn clean package -Dmaven.test.skip=true

会在各模块或者微服务的 target 目录下生成 模块名.jar 的可执行文件。

Copy

由于微服务较多,若依提供了复制脚本,将不同的微服务打包后的 jar 复制到待部署的 docker 目录下;根据需要修改 copy.sh 的内容,建议使用 bash

#!/bin/sh

# 复制项目的文件到对应docker路径,便于一键生成镜像。
usage() {
	echo "Usage: sh copy.sh"
	exit 1
}

# copy jar
echo "begin copy ruoyi-gateway "
cp ../ruoyi-gateway/target/ruoyi-gateway.jar ./ruoyi/gateway/jar

echo "begin copy ruoyi-auth "
cp ../ruoyi-auth/target/ruoyi-auth.jar ./ruoyi/auth/jar

echo "begin copy ruoyi-modules-system "
cp ../ruoyi-modules/ruoyi-system/target/ruoyi-modules-system.jar ./ruoyi/modules/system/jar

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

部署

准备好前端后端以及所有的配置文件后,可以将若依项目下的 docker 目录直接上传到服务器。

  1. 为了避免因权限问题导致部署失败,建议先赋权限(777,简单粗暴;实际生产环境可根据需要配置权限。)
chown -R root:root docker
chmod -R 777 docker
  1. 切换至docker-compose.yml所在目录
  • docker-compose -f docker-compose.yml up -d ruoyi-mysql ruoyi-redis ruoyi-nacos ruoyi-minio
  • docker-compose -f docker-compose.yml up -d ruoyi-gateway ruoyi-nginx ruoyi-auth ruoyi-modules-system
  1. 重新部署指定容器
  • docker stop ruoyi-gateway ruoyi-nginx ruoyi-auth ruoyi-modules-system
  • docker rm ruoyi-gateway ruoyi-nginx ruoyi-auth ruoyi-modules-system
  • docker rmi docker_ruoyi-gateway docker_ruoyi-auth docker_ruoyi-modules-system

验证服务

所有相关容器已正常运行。

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

所有微服务已注册成功。

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

前端可以正常打开登录。

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

离线部署容器化的微服务

离线安装Docker

参考:CentOS7.8离线安装Docker24.0.2,离线安装gcc与g++环境

离线部署微服务

实际场景中,有时候服务器环境不允许连接外网,导致无法从镜像仓库拉取镜像;针对这种情况, Docker 提供了 saveload 命令来实现镜像的导出与导入。

  1. 导出镜像

docker save -o <file-name.tar>

  1. 导入镜像

docker load -i <file-path.tar>

  1. 验证导入的镜像

docker images

# 保存镜像
docker save redis:latest -o redis.tar
docker save mysql:8.0 -o mysql.tar
docker save nginx:latest -o nginx.tar
docker save minio/minio:latest -o minio.tar
docker save nacos/nacos-server:latest -o nacos.tar
docker save openjdk:8-jre -o openjdk.tar
docker save docker-ruoyi-gateway:latest -o docker-ruoyi-gateway.tar
docker save docker-ruoyi-auth:latest -o docker-ruoyi-auth.tar
docker save docker-ruoyi-modules-system:latest -o docker-ruoyi-modules-system.tar

# 加载镜像
docker load -i redis.tar
docker load -i minio.tar 
docker load -i mysql.tar 
docker load -i nacos.tar 
docker load -i nginx.tar
docker load -i openjdk.tar
docker load -i docker-ruoyi-gateway.tar
docker load -i docker-ruoyi-auth.tar 
docker load -i docker-ruoyi-modules-system.tar 

离线导入数据库

可以通过 MySQL 数据库的 source 命令将 SQL 语句(建库、建表以及Insert语句)导入目标库。

Note:离线导入镜像的局限性:在 X86_64 平台上制作的 Image 不可在 ARM 平台(M1 视同为 ARM)上使用,反之亦然。

Docker可视化管理工具

Windows上的Docker Desktop

主要用于开发或者测试环境,略。。

IDEA连接Docker服务

参考:云原生之容器编排实践-通过IDEA连接Docker服务

Portainer图形化容器管理

安装Portainer

[root@docker ~]# cd /opt/
[root@docker opt]# mkdir portainer
[root@docker opt]# docker pull portainer/portainer
[root@docker opt]# docker run -p 9000:9000 -p 8000:8000 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /opt/portainer/data:/data \
-d portainer/portainer

设置密码

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

选择环境

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

Dashboard

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

容器管理

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

查看日志

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

容器详情

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

进入容器

若依微服务部署docker,云原生,Docker,运维,docker,微服务,容器,若依微服务,docker-compose

Reference

http://doc.ruoyi.vip/ruoyi-cloud/cloud/dokcer.html文章来源地址https://www.toymoban.com/news/detail-764277.html

到了这里,关于Docker容器化部署若依微服务ruoyi-cloud项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ruoyi-cloud部署

    默认你已经安装mysql,nacos,seata,sentinel等(没有的可以先找教程安装) 1、下载源码:git clone https://gitee.com/zhangmrit/ruoyi-cloud 2、项目依赖导入,选择自己的maven环境等,创建三个库ry-cloud、ry-config、ry-seata执行下面三个sql,把quartz放到ry-cloud 3、nacos配置,生成配置列表(配置该

    2024年02月11日
    浏览(42)
  • 【云原生】3.5 RuoYi-Cloud部署实战(下)

     哈喽~大家好呀,这篇呢我们接着上篇来讲。  🥇个人主页:个人主页​​​​​              🥈 系列专栏:【云原生系列】 🥉与这篇相关的文章:             【云原生】3.2 Kubernetes 实战之多租户系统实战 【云原生】3.2 Kubernetes 实战之多租户系统实战_程序猿追的博

    2024年02月03日
    浏览(44)
  • RuoYi-Cloud微服务开发实战

    目录 第一章 开发环境搭建 前言 一、RuoYi-Cloud是什么? 二、环境部署 1.安装JDK 2.安装docker 3.下载mysql镜像 4.下载redis镜像 5.下载nacos-server 镜像 6.安装node.js 三、项目启动 开发设备:         MacBook Pro(14英寸,2021年)         系统版本:macOS Monterey         芯片:

    2024年02月16日
    浏览(43)
  • ruoyi-cloud微服务新建子模块

    相关文章 官方文档 1、复制system模块 直接复制 modules下面已有的system模块,改名为 test 2、在modules下的 pom.xml文件中添加子模块 test 这里要注意添加的位置是在 modules下的 pom.xml,也就是 test的父模块的 3、进入 test模块修改 pom.xml 把原有的system 修改成test,把 modules-system修改成

    2024年02月13日
    浏览(38)
  • 若依框架(RuoYi-Cloud 微服务版本)134节视频教程

    RuoYi-Cloud 是一个 Java EE 分布式微服务架构平台,基于经典技术组合(Spring Boot、Spring Cloud Alibaba、Vue、Element),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、代码生成等。在线定时任务配置;支持集群,支持多数据源。 在线体验 若依

    2024年02月13日
    浏览(39)
  • 若依开源框架-微服务版本(ruoyi-Cloud)使用说明-超详细

    JDK 1.8 Mysql 5.7以上 Nacos 2.0.3 Node 14 版本以上 打开网站: RuoYi 若依官方网站 |后台管理系统|权限管理系统|快速开发框架|企业管理系统|开源框架|微服务框架|前后端分离框架|开源后台系统|RuoYi|RuoYi-Vue|RuoYi-Cloud|RuoYi框架|RuoYi开源|RuoYi视频|若依视频|RuoYi开发文档|若依开发文档|J

    2024年02月04日
    浏览(101)
  • 【RuoYi-Cloud项目研究】【ruoyi-gateway模块】网关的AuthFilter完成“认证”,注意是认证而不是权限

    过滤器的功能是检验经过网关的每一个请求,检查 token 中的信息是否有效。 注意是“认证检查”,而不是“权限” ,权限是在每个服务的Controller上贴权限注解 1、在用户完成登录后,程序会把用户相关的用户、角色、权限等信息临时存储在 redis 中,并把token返回给终端用户

    2024年02月07日
    浏览(35)
  • 重写RuoYi-Cloud所有功能 整合 SpringCloudAlibaba Dubbo Mybatis-Plus MQ OSS ES Xxl-Job Docker 全方位升级 定期同步

    转载于:https://blog.csdn.net/weixin_40461281/article/details/122837923 RuoYi-Cloud-Plus  微服务通用权限管理系统  重写 RuoYi-Cloud 全方位升级(不兼容原框架) 系统演示: 传送门 分布式集群版本(功能一致) 功能介绍 使用技术 文档地址 特性注意事项 微服务权限管理系统 RuoYi-Cloud-Plus RuoYi-Clo

    2024年02月08日
    浏览(38)
  • 若依cloud(RuoYi-Cloud)新增业务模块和功能模块增删改查演示

    前言 看了几篇文章感觉都不太满意,索性自己来写一篇。 一、后端 后端新建业务模块流程大致如下: 看一下目录结构, business 就是我们自己的业务模块: 1.0 新建业务模块 就是在 ruoyi-module模块 下新建一个 springboot 工程模块,大家既然都学到cloud了,我相信这一步也不用多

    2024年02月17日
    浏览(49)
  • 结合ruoyi-cloud和ruoyi-app实现微信小程序的授权登录

    原视频链接 https://www.bilibili.com/video/BV1mg4y1s75r/?spm_id_from=333.337.search-card.all.clickvd_source=c15794e732e28886fefab201ec9c6253 结合 RuoYi-Cloud 和 RuoYi-App 实现微信小程序的授权登录。 之前讲过前后端分离版的授权登录,逻辑大致一致,不同点有: 微信头像和昵称的获取方式。由于最新的本地

    2024年02月09日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包