基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

码农世界 2024-06-19 后端 81 次浏览 0个评论

一、说明

本文配置环境为VMware虚拟机(4核CPU,内存至少12GB(8GB以内会提示404错误,验证码无法显示),40GB磁盘),OS为openEuler 22.03 LTS ,虚拟机要求能联网。

二、安装docker环境

2.1 安装docker相关软件包

[root@node01 ~]# dnf -y install docker docker-compose

2.2 查看docker版本

[root@node01 ~]# docker version
Client:
 Version:           18.09.0
 EulerVersion:      18.09.0.323
 API version:       1.39
 Go version:        go1.17.3
 Git commit:        172f8da
 Built:             Wed Apr 19 02:01:22 2023
 OS/Arch:           linux/amd64
 Experimental:      false
Server:
 Engine:
  Version:          18.09.0
  EulerVersion:     18.09.0.323
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.17.3
  Git commit:       172f8da
  Built:            Wed Apr 19 02:00:48 2023
  OS/Arch:          linux/amd64
  Experimental:     false

2.3 添加国内镜像源

系统默认从docker官方镜像源Docker hub拉取镜像,在国内从Docker hub拉取镜像会比较慢,而且可能因为网络原因导致拉取失败,此时就可以配置 “国内的加速器”。国内有许多的云服务商都配置了国内镜像加速器服务。

以配置华为云容器加速器为例,如下图所示,在华为云的所有服务中,找到容器中的“容器镜像服务SWR”,

基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

点击左侧的“镜像资源”-->“镜像中心”,然后点击右上角的“镜像加速器”,打开如下图所示的窗口,并按其中的操作说明修改/etc/docker/daemon.json文件即可。

基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

阿里云的容器加速器服务可参考帮助:Docker部署/容器加速器

注:如果要添加私有仓库,则 /etc/docker/daemon.json文件内容可参考如下(IP地址和端口号请根据自身情况修改):

{
  "insecure-registries":["192.168.188.188:8888"]
}

2.4 编辑/etc/sysconfig/docker配置文件 

在openEuler 22.03中,系统重启后会丢失自定义的容器网络,导致容器无法重新启动。可通过配置/etc/sysconfig/docker文件,在其中加入内容:DISABLE_CRASH_FILES_DELETE=true

[root@host1 ~]# vim /etc/sysconfig/docker 
……此处省略文件原有内容……
DISABLE_CRASH_FILES_DELETE=true

2.5 重启docker服务并设置为开机自启动

完成上述操作后,重启docker服务,命令如下:

[root@node01 ~]# systemctl restart docker
[root@node01 ~]# systemctl enable docker

三、部署分布式微服务架构Web项目实战

以下以分布式微服务架构的开源项目(https://gitee.com/y_project/RuoYi-Cloud)为例,采用docker-compos容器编排的方式进行实战训练。

根据官方文档(http://doc.ruoyi.vip/ruoyi/)说明,该项目的系统运行环境要求如下:

  • JDK >= 1.8
  • MySQL >= 5.7
  • Maven >= 3.0

    根据官方文档信息,系统模板如下:

    com.ruoyi     
    ├── ruoyi-ui              // 前端框架 [80]
    ├── ruoyi-gateway         // 网关模块 [8080]
    ├── ruoyi-auth            // 认证中心 [9200]
    ├── ruoyi-api             // 接口模块
    │       └── ruoyi-api-system                          // 系统接口
    ├── ruoyi-common          // 通用模块
    │       └── ruoyi-common-core                         // 核心模块
    │       └── ruoyi-common-datascope                    // 权限范围
    │       └── ruoyi-common-datasource                   // 多数据源
    │       └── ruoyi-common-log                          // 日志记录
    │       └── ruoyi-common-redis                        // 缓存服务
    │       └── ruoyi-common-seata                        // 分布式事务
    │       └── ruoyi-common-security                     // 安全模块
    │       └── ruoyi-common-swagger                      // 系统接口
    ├── ruoyi-modules         // 业务模块
    │       └── ruoyi-system                              // 系统模块 [9201]
    │       └── ruoyi-gen                                 // 代码生成 [9202]
    │       └── ruoyi-job                                 // 定时任务 [9203]
    │       └── ruoyi-file                                // 文件服务 [9300]
    ├── ruoyi-visual          // 图形化管理模块
    │       └── ruoyi-visual-monitor                      // 监控中心 [9100]
    ├──pom.xml                // 公共依赖

    利用docker部署该项目的部署架构如下图所示。

    基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

    上图中,各容器实例提供的服务简介绍如下:

    • ruoyi-nginx容器实例提供HTTP反向代理和Web服务
    • ruoyi-gateway容器实例网关服务
    • ruoyi-auth容器实例提供认证服务
    • ruoyi-nacos容器实例提供注册中心和配置中心服务
    • ruoyi-modules-XXX容器实例提供系统业务功能服务
    • ruoyi-mysql容器实例提供数据库服务
    • ruoyi-redis容器实例提供缓存和权限认证服务
    • ruoyi-visual-monitor容器实例提供系统服务状态监控服务

      3.1 准备工作

      3.1.1 清空环境

      为避免干扰,建议清除所有已有的镜像和容器,确保执行【docker ps -a】和【docker images】命令的输出均为空,如下图所示。

      [root@node01 ~]# docker ps -a
      CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
      [root@node01 ~]# docker images
      REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
      

      3.1.2 下载源码

      若依开源项目(前后端分离版本)源码下载地址:https://gitee.com/y_project/RuoYi-Cloud

      下载该项目源码的ZIP压缩包。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      解压后的文件和目录如下:

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.1.3 修改配置文件

      3.1.3.1 修改ruoyi-auth配置文件

      编辑源码目录\ruoyi-auth\src\main\resources下的bootstrap.yml配置文件,将其中的127.0.0.1替换成nacos容器名称,如下所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.1.3.2 修改ruoyi-gateway配置文件

      编辑源码目录\ruoyi-gateway\src\main\resources下的bootstrap.yml配置文件,将其中端口号为8848前面的127.0.0.1替换成nacos容器名,端口号为8718前面的127.0.0.1替换成服务器IP地址,端口号更改为服务器对外映射端口(如果有的话),如下所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.1.3.3 修改ruoyi-modules-file配置文件

      编辑源码目录\ruoyi-modules\ruoyi-file\src\main\resources下的bootstrap.yml配置文件,将其中的127.0.0.1替换成nacos容器名,如下所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.1.3.4 修改ruoyi-modules-gen配置文件

      编辑源码目录\ruoyi-modules\ruoyi-gen\src\main\resources下的bootstrap.yml配置文件,将其中的127.0.0.1替换成nacos容器名,如下所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.1.3.5 修改ruoyi-modules-job配置文件

      编辑源码目录\ruoyi-modules\ruoyi-job\src\main\resources下的bootstrap.yml配置文件,将其中的127.0.0.1替换成nacos容器名,如下所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.1.3.6 修改ruoyi-modules-system配置文件

      编辑源码目录\ruoyi-modules\ruoyi-system\src\main\resources下的bootstrap.yml配置文件,将其中的127.0.0.1替换成nacos容器名,如下所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.1.3.7 修改ruoyi-monitor配置文件

      编辑源码目录\ruoyi-visual\ruoyi-monitor\src\main\resources下的bootstrap.yml配置文件,将其中的127.0.0.1替换成nacos容器名,如下所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.1.4 准备nacos配置文件

      在源码根目录下新建一个名为conf的目录,并利用文本编辑器(如notepad++)新建一个名为application.properties的文本文件,文件内容如下,并将该文件保存在conf目录中。

      spring.datasource.platform=mysql
      db.num=1
      db.url.0=jdbc:mysql://ruoyi-cloud-mysql:3306/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
      db.user=root
      db.password=password
      nacos.naming.empty-service.auto-clean=true
      nacos.naming.empty-service.clean.initial-delay-ms=50000
      nacos.naming.empty-service.clean.period-time-ms=30000
      management.endpoints.web.exposure.include=*
      management.metrics.export.elastic.enabled=false
      management.metrics.export.influx.enabled=false
      server.tomcat.accesslog.enabled=true
      server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
      server.tomcat.basedir=/home/ruoyi/nacos/tomcat/logs
      nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
      nacos.core.auth.system.type=nacos
      nacos.core.auth.enabled=false
      nacos.core.auth.default.token.expire.seconds=18000
      nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
      nacos.core.auth.caching.enabled=true
      nacos.core.auth.enable.userAgentAuthWhite=false
      nacos.core.auth.server.identity.key=serverIdentity
      nacos.core.auth.server.identity.value=security
      nacos.istio.mcp.server.enabled=false

      注:第三行中的ruoyi-cloud-mysql为mysql的容器名,第四行中的db.user表示mysql数据库的用户名,第五行的db.password表示用户密码,这里的密码可根据需要自行修改。 

      3.1.5 准备nginx配置文件

      利用文本编辑器(如notepad++)新建一个名为nginx.conf的文本文件,文件内容如下,并将该文件保存在conf目录中。

      worker_processes  1;
      events {
          worker_connections  1024;
      }
      http {
          include       mime.types;
          default_type  application/octet-stream;
          sendfile        on;
          keepalive_timeout  65;
          server {
              listen       80;    #前端监听端口
              server_name  localhost;
              # 配置前端目录及首页
              location / {
                  root   /usr/local/ruoyi/dist;  #前端Web主目录,可自行定义
                  try_files $uri $uri/ /index.html;
                  index  index.html index.htm;
              }
              # 配置反向代理,所有对/prod-api接口的访问均代理至ruoyi-cloud-gateway:8080
              location /prod-api/{
                  proxy_set_header Host $http_host;
                  proxy_set_header X-Real-IP $remote_addr;
                  proxy_set_header REMOTE-HOST $remote_addr;
                  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                  proxy_pass http://ruoyi-cloud-gateway:8080/;
              }
              # 避免actuator暴露
              if ($request_uri ~ "/actuator") {
                  return 403;
              }
              error_page   500 502 503 504  /50x.html;
              location = /50x.html {
                  root   html;
              }
          }
      }

      3.1.6 准备redis配置文件

      利用文本编辑器(如notepad++)新建一个名为redis.conf的文本文件,文件内容如下,并将该文件保存在conf目录中。

      requirepass 123456

      注:其中的密码可自行修改。

      3.1.7 准备工作目录

       在Linux服务器的/ruoyi-cloud目录中建立如下图所示的目录结构。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      示例命令如下:

      [root@node01 ~]# mkdir /ruoyi-cloud && cd /ruoyi-cloud
      [root@node01 ruoyi-cloud]# mkdir -p mysql/db nacos/conf nginx/conf redis/conf ruoyi script uploadPath
      [root@node01 ruoyi-cloud]# mkdir -p ruoyi/auth/jar ruoyi/gateway/jar ruoyi/modules ruoyi/visual/monitor/jar
      [root@node01 ruoyi-cloud]# mkdir -p ruoyi/modules/file/jar ruoyi/modules/gen/jar ruoyi/modules/job/jar ruoyi/modules/system/jar

      3.2 打包前端项目

      可利用Node.js包管理工具的npm命令对前端项目进行打包,Node.js的安装与环境配置可参见文章:Node.js的安装与配置

      在ruoyi-ui文件夹下的package.json文件中可以看到前端项目构建的命令,其中build:prod为构建生产环境,build:stage则为测试环境,以下以构建生产环境为例。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      在cmd命令行下,在ruoyi-ui文件夹下,依次执行【npm install】和【npm run build:prod】将前端项目打包成一个dist文件夹,如下图所示。

      # 安装依赖包
      D:\develop\ruoyi-cloud\ruoyi-ui>npm install
      npm WARN ERESOLVE overriding peer dependency
      ……此处省略其它系统输出……
      # 打包前端项目
      D:\develop\ruoyi-cloud\ruoyi-ui>npm run build:prod
      > ruoyi@3.6.4 build:prod
      > vue-cli-service build
      -  Building for production...
      ……此处省略其它系统输出……
      # 查看前端项目dist文件夹中的文件
      D:\develop\ruoyi-cloud\ruoyi-ui>dir dist
       驱动器 D 中的卷是 软件
       卷的序列号是 C88D-5646
       D:\develop\ruoyi-cloud\ruoyi-ui\dist 的目录
      2024/05/12  17:52              .
      2024/05/12  17:52              ..
      2024/05/12  17:52             5,561 favicon.ico
      2024/05/12  17:52              html
      2024/05/12  17:52            12,085 index.html
      2024/05/12  17:52             3,967 index.html.gz
      2024/05/12  17:52                26 robots.txt
      2024/05/12  17:52              static
                     4 个文件         21,639 字节
                     4 个目录 219,372,675,072 可用字节

      3.3 构建前端镜像

      3.3.1 上传前端文件

      将前端项目打包的dist文件夹利用xftp上传至Linux服务器的/ruoyi-cloud/目录,如下图所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.3.2 上传nginx配置文件

      将conf文件夹下的nginx.conf文件利用xftp上传至Linux服务器的/ruoyi-cloud/nginx/conf目录,如下图所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.3.3 编写前端镜像构建脚本

      在/ruoyi-cloud/nginx目录下新建Dockerfile镜像构建脚本,脚本内容如下:

      [root@node01 nginx]# vim Dockerfile 
      # 基础镜像
      FROM nginx
      # author
      MAINTAINER ptuxgk
      # 挂载目录
      VOLUME /usr/local/ruoyi/dist
      # 创建目录
      RUN mkdir -p /usr/local/ruoyi/dist
      # 指定路径
      WORKDIR /usr/local/ruoyi/dist
      # 复制conf文件到路径
      COPY ./conf/nginx.conf /etc/nginx/nginx.conf
      # 复制前端项目文件到Web主目录
      COPY ./dist /usr/local/ruoyi/dist

      3.3.4 构建前端镜像

      在Dockerfile文件所在目录执行【docker build -t ruoyi-cloud-nginx:latest .】命令拉取nginx基础镜像,并利用该nginx基础镜像构建一个名为ruoyi-cloud-nginx:latest的镜像,如下所示。

      [root@node01 nginx]# docker build -t ruoyi-cloud-nginx:latest .
      Sending build context to Docker daemon  6.672MB
      Step 1/3 : FROM nginx:latest
      latest: Pulling from library/nginx
      b0a0cf830b12: Pull complete 
      8ddb1e6cdf34: Pull complete 
      5252b206aac2: Pull complete 
      988b92d96970: Pull complete 
      7102627a7a6e: Pull complete 
      93295add984d: Pull complete 
      ebde0aa1d1aa: Pull complete 
      Digest: sha256:ed6d2c43c8fbcd3eaa44c9dab6d94cb346234476230dc1681227aa72d07181ee
      Status: Downloaded newer image for nginx:latest
       ---> 7383c266ef25
      Step 2/3 : COPY dist  /usr/share/dist
       ---> 972f25f1821e
      Step 3/3 : COPY nginx.conf /etc/nginx/nginx.conf
       ---> ad549d5b54bc
      Successfully built ad549d5b54bc
      Successfully tagged ruoyi-cloud-nginx:latest
      

      注:若某个下载环节卡住长时间不动,可按Ctrl+C取消,重新执行构建即可。 

      3.3.5 查看前端镜像

      执行【docker images】命令查看当前镜像,如下所示。

      [root@node01 nginx]# docker images
      REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
      ruoyi-cloud-nginx   latest              ff1e85d673af        37 seconds ago      148MB
      nginx               latest              605c77e624dd        2 years ago         141MB
      

      3.4 编译构建后端项目

      利用诸如IntelliJ IDEA之类的工具将系统编译构建出17个jar包(也可以利用华为云的CodeArts编译构建生成,过程可参见:利用CodeArts构建编译后端项目)。

      利用IntelliJ IDEA编译构建过程如下所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      将编译构建的jar包复制保存在本地某个目录(比如源码根目录下的jar)。 

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.5 构建后端镜像

      3.5.1 构建gateway镜像

      3.5.1.1 上传jar包

      将编译构建的ruoyi-gateway.jar包上传至/ruoyi-cloud/ruoyi/gateway/jar目录下,如下图所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.5.1.2 编写镜像脚本文件

       在/ruoyi-cloud/ruoyi/gateway目录新建一个名为Dockerfile镜像构建脚本,脚本内容如下:

      [root@node01 gateway]# vim Dockerfile
      # 基础镜像
      FROM  openjdk:8-jre
      # author
      MAINTAINER ptuxgk
      # 挂载目录
      VOLUME /usr/local/ruoyi
      # 创建目录
      RUN mkdir -p /usr/local/ruoyi
      # 指定路径
      WORKDIR /usr/local/ruoyi
      # 复制jar文件到路径
      COPY ./jar/ruoyi-gateway.jar /usr/local/ruoyi/ruoyi-gateway.jar
      # 启动网关服务
      ENTRYPOINT ["java","-jar","ruoyi-gateway.jar"]
      
      3.5.1.3 构建gateway镜像

      在/ruoyi-cloud/ruoyi/gateway目录执行【docker build -t ruoyi-cloud-gateway:latest .】命令拉取openjdk:8-jre基础镜像,并利用该基础镜像构建一个名为ruoyi-cloud-gateway:latest的镜像,如下所示。

      [root@node01 gateway]# docker build -t ruoyi-cloud-gateway:latest .
      Sending build context to Docker daemon  88.64MB
      Step 1/7 : FROM  openjdk:8-jre
      8-jre: Pulling from library/openjdk
      0e29546d541c: Pull complete 
      9b829c73b52b: Pull complete 
      cb5b7ae36172: Pull complete 
      99ce012bef04: Pull complete 
      22dc2a72d098: Pull complete 
      9c69a57e10d9: Pull complete 
      Digest: sha256:c0ab1c0631266ef9420a414726a790733a2561efc5f4fa2f9b8186f4d6b00d53
      Status: Downloaded newer image for openjdk:8-jre
       ---> 26ac3f63d29f
      Step 2/7 : MAINTAINER ptuxgk
       ---> Running in f5468f50085d
      Removing intermediate container f5468f50085d
       ---> 76a2be41ec28
      Step 3/7 : VOLUME /usr/local/ruoyi
       ---> Running in 4b73ed75b4f0
      Removing intermediate container 4b73ed75b4f0
       ---> c89d9c2269d7
      Step 4/7 : RUN mkdir -p /usr/local/ruoyi
       ---> Running in 8a3e5ea28ff7
      Removing intermediate container 8a3e5ea28ff7
       ---> 2f78ffef79b6
      Step 5/7 : WORKDIR /usr/local/ruoyi
       ---> Running in c780fe6b6378
      Removing intermediate container c780fe6b6378
       ---> 9d84c70972bd
      Step 6/7 : COPY ./jar/ruoyi-gateway.jar /usr/local/ruoyi/ruoyi-gateway.jar
       ---> 1028eea8d844
      Step 7/7 : ENTRYPOINT ["java","-jar","ruoyi-gateway.jar"]
       ---> Running in df90a9baed5f
      Removing intermediate container df90a9baed5f
       ---> 367e221b3f9e
      Successfully built 367e221b3f9e
      Successfully tagged ruoyi-cloud-gateway:latest
      
      3.5.1.4 查看镜像

       执行【docker images】命令查看当前镜像,如下所示。

      [root@node01 gateway]# docker images
      REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
      ruoyi-cloud-gateway latest              367e221b3f9e        About a minute ago   362MB
      ruoyi-cloud-nginx   latest              ff1e85d673af        23 minutes ago       148MB
      nginx               latest              605c77e624dd        2 years ago          141MB
      openjdk             8-jre               26ac3f63d29f        2 years ago          273MB

      3.5.2 构建nacos镜像

      3.5.2.1 上传nacos配置文件

      将conf文件夹中的application.properties配置文件上传至/ruoyi-cloud/nacos/conf目录下,如下图所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.5.2.2 编写镜像脚本文件

       在/ruoyi-cloud/nacos/目录新建一个名为Dockerfile镜像构建脚本,脚本内容如下:

      [root@node01 nacos]# vim Dockerfile
      # 基础镜像
      FROM nacos/nacos-server
      # author
      MAINTAINER ptuxgk
      # 复制conf文件到路径
      COPY ./conf/application.properties /home/nacos/conf/application.properties
      3.5.2.3 构建nacos镜像

      在/ruoyi-cloud/nacos/目录执行【docker build -t ruoyi-cloud-nacos:latest .】命令拉取nacos/nacos-server基础镜像,并利用该基础镜像构建一个名为ruoyi-cloud-nacos:latest的镜像,如下所示。

      [root@node01 nacos]# docker build -t ruoyi-cloud-nacos:latest .
      Sending build context to Docker daemon  4.608kB
      Step 1/3 : FROM nacos/nacos-server
      latest: Pulling from nacos/nacos-server
      5ad559c5ae16: Pull complete 
      5746ca7cf180: Pull complete 
      d709fe221c89: Pull complete 
      e88fdcf257b1: Pull complete 
      eb573b28173c: Pull complete 
      a71625257ced: Pull complete 
      26e7e7836838: Pull complete 
      30f7d6851c4a: Pull complete 
      d565cd94c625: Pull complete 
      Digest: sha256:87a3d8b78ec24c253a4db7c093097a7b256327eb5117cd9498e289b896918153
      Status: Downloaded newer image for nacos/nacos-server:latest
       ---> bdf60dc2ada3
      Step 2/3 : MAINTAINER ptuxgk
       ---> Running in 0f93cd9783da
      Removing intermediate container 0f93cd9783da
       ---> e10323fac388
      Step 3/3 : COPY ./conf/application.properties /usr/local/nacos/conf/application.properties
       ---> 9440a168a8aa
      Successfully built 9440a168a8aa
      Successfully tagged ruoyi-cloud-nacos:latest
      3.5.2.4 查看镜像

      执行【docker images】命令查看当前镜像,如下所示。

      [root@node01 nacos]# docker images
      REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
      ruoyi-cloud-nacos    latest              9440a168a8aa        53 seconds ago      1.05GB
      ruoyi-cloud-gateway  latest              367e221b3f9e        14 minutes ago      362MB
      ruoyi-cloud-nginx    latest              ff1e85d673af        36 minutes ago      148MB
      nginx                latest              605c77e624dd        2 years ago         141MB
      openjdk              8-jre               26ac3f63d29f        2 years ago         273MB
      nacos/nacos-server   latest              bdf60dc2ada3        2 years ago         1.05GB
      

      3.5.3 构建auth镜像

      3.5.3.1 上传jar包

      将编译构建的ruoyi-auth.jar包上传至/ruoyi-cloud/ruoyi/auth/jar目录下,如下图所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.5.3.2 编写镜像脚本文件

       在/ruoyi-cloud/ruoyi/auth目录新建一个名为Dockerfile镜像构建脚本,脚本内容如下:

      [root@node01 auth]# vim Dockerfile
      # 基础镜像
      FROM  openjdk:8-jre
      # author
      MAINTAINER ptuxgk
      # 挂载目录
      VOLUME /usr/local/ruoyi
      # 创建目录
      RUN mkdir -p /usr/local/ruoyi
      # 指定路径
      WORKDIR /usr/local/ruoyi
      # 复制jar文件到路径
      COPY ./jar/ruoyi-auth.jar /usr/local/ruoyi/ruoyi-auth.jar
      # 启动认证服务
      ENTRYPOINT ["java","-jar","ruoyi-auth.jar"]
      3.5.3.3 构建auth镜像

      在/ruoyi-cloud/ruoyi/auth目录执行【docker build -t ruoyi-cloud-auth:latest .】命令拉取openjdk:8-jre基础镜像,并利用该基础镜像构建一个名为ruoyi-auth:latest的镜像,如下所示。

      [root@node01 auth]# docker build -t ruoyi-cloud-auth:latest .
      Sending build context to Docker daemon  80.52MB
      Step 1/7 : FROM  openjdk:8-jre
       ---> 26ac3f63d29f
      Step 2/7 : MAINTAINER ptuxgk
       ---> Using cache
       ---> 76a2be41ec28
      Step 3/7 : VOLUME /usr/local/ruoyi
       ---> Using cache
       ---> c89d9c2269d7
      Step 4/7 : RUN mkdir -p /usr/local/ruoyi
       ---> Using cache
       ---> 2f78ffef79b6
      Step 5/7 : WORKDIR /usr/local/ruoyi
       ---> Using cache
       ---> 9d84c70972bd
      Step 6/7 : COPY ./jar/ruoyi-auth.jar /usr/local/ruoyi/ruoyi-auth.jar
       ---> 94c4756f24c7
      Step 7/7 : ENTRYPOINT ["java","-jar","ruoyi-auth.jar"]
       ---> Running in 26f756ec1a5f
      Removing intermediate container 26f756ec1a5f
       ---> 7a78ed9189f5
      Successfully built 7a78ed9189f5
      Successfully tagged ruoyi-cloud-auth:latest
      3.5.3.4 查看镜像

      执行【docker images】命令查看当前镜像,如下所示。

      [root@node01 auth]# docker images
      REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
      ruoyi-cloud-auth     latest              7a78ed9189f5        2 minutes ago       354MB
      ruoyi-cloud-nacos    latest              9440a168a8aa        6 minutes ago       1.05GB
      ruoyi-cloud-gateway  latest              367e221b3f9e        19 minutes ago      362MB
      ruoyi-cloud-nginx    latest              ff1e85d673af        41 minutes ago      148MB
      nginx                latest              605c77e624dd        2 years ago         141MB
      openjdk              8-jre               26ac3f63d29f        2 years ago         273MB
      nacos/nacos-server   latest              bdf60dc2ada3        2 years ago         1.05GB

      3.5.4 构建modules-system镜像

      3.5.4.1 上传jar包

      将编译构建的ruoyi-modules-system.jar包上传至/ruoyi-cloud/ruoyi/modules/system/jar目录下,如下图所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.5.4.2 编写镜像脚本文件

       在/ruoyi-cloud/ruoyi/modules/system/目录新建一个名为Dockerfile镜像构建脚本,脚本内容如下:

      [root@node01 system]# vim Dockerfile
      # 基础镜像
      FROM  openjdk:8-jre
      # author
      MAINTAINER ptuxgk
      # 挂载目录
      VOLUME /usr/local/ruoyi
      # 创建目录
      RUN mkdir -p /usr/local/ruoyi
      # 指定路径
      WORKDIR /usr/local/ruoyi
      # 复制jar文件到路径
      COPY ./jar/ruoyi-modules-system.jar /usr/local/ruoyi/ruoyi-modules-system.jar
      # 启动系统服务
      ENTRYPOINT ["java","-jar","ruoyi-modules-system.jar"]
      
      3.5.4.3 构建modules-system镜像

      在/ruoyi-cloud/ruoyi/modules/system/目录执行【docker build -t ruoyi-cloud-modules-system:latest .】命令拉取openjdk:8-jre基础镜像,并利用该基础镜像构建一个名为ruoyi-cloud-modules-system:latest的镜像,如下所示。

      [root@node01 system]# docker build -t ruoyi-cloud-modules-system:latest .
      Sending build context to Docker daemon  96.87MB
      Step 1/7 : FROM  openjdk:8-jre
       ---> 26ac3f63d29f
      Step 2/7 : MAINTAINER ptuxgk
       ---> Using cache
       ---> 76a2be41ec28
      Step 3/7 : VOLUME /usr/local/ruoyi
       ---> Using cache
       ---> c89d9c2269d7
      Step 4/7 : RUN mkdir -p /usr/local/ruoyi
       ---> Using cache
       ---> 2f78ffef79b6
      Step 5/7 : WORKDIR /usr/local/ruoyi
       ---> Using cache
       ---> 9d84c70972bd
      Step 6/7 : COPY ./jar/ruoyi-modules-system.jar /usr/local/ruoyi/ruoyi-modules-system.jar
       ---> cda30329b07b
      Step 7/7 : ENTRYPOINT ["java","-jar","ruoyi-modules-system.jar"]
       ---> Running in 929d10014d2d
      Removing intermediate container 929d10014d2d
       ---> ac593d77af23
      Successfully built ac593d77af23
      Successfully tagged ruoyi-cloud-modules-system:latest
      3.5.4.4 查看镜像

      执行【docker images】命令查看当前镜像,如下所示。

      [root@node01 system]# docker images
      REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
      ruoyi-cloud-modules-system   latest              ac593d77af23        21 seconds ago      370MB
      ruoyi-cloud-auth             latest              7a78ed9189f5        12 minutes ago      354MB
      ruoyi-cloud-nacos            latest              9440a168a8aa        16 minutes ago      1.05GB
      ruoyi-cloud-gateway          latest              367e221b3f9e        29 minutes ago      362MB
      ruoyi-cloud-nginx            latest              ff1e85d673af        About an hour ago   148MB
      nginx                        latest              605c77e624dd        2 years ago         141MB
      openjdk                      8-jre               26ac3f63d29f        2 years ago         273MB
      nacos/nacos-server           latest              bdf60dc2ada3        2 years ago         1.05GB

      3.5.5 构建modules-gen镜像

      3.5.5.1 上传jar包

      将编译构建的modules-gen.jar包上传至/ruoyi-cloud/ruoyi/modules/gen/jar目录下,如下图所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.5.5.2 编写镜像脚本文件

       在/ruoyi-cloud/ruoyi/modules/gen/目录新建一个名为Dockerfile镜像构建脚本,脚本内容如下:

      [root@node01 gen]# vim Dockerfile
      # 基础镜像
      FROM  openjdk:8-jre
      # author
      MAINTAINER ptuxgk
      # 挂载目录
      VOLUME /usr/local/ruoyi
      # 创建目录
      RUN mkdir -p /usr/local/ruoyi
      # 指定路径
      WORKDIR /usr/local/ruoyi
      # 复制jar文件到路径
      COPY ./jar/ruoyi-modules-gen.jar /usr/local/ruoyi/ruoyi-modules-gen.jar
      # 启动代码生成服务
      ENTRYPOINT ["java","-jar","ruoyi-modules-gen.jar"]
      
      3.5.5.3 构建modules-gen镜像

      在/ruoyi-cloud/ruoyi/modules/gen/目录执行【docker build -t ruoyi-cloud-modules-gen:latest .】命令拉取openjdk:8-jre基础镜像,并利用该基础镜像构建一个名为ruoyi-cloud-modules-gen:latest的镜像,如下所示。

      [root@node01 gen]# docker build -t ruoyi-cloud-modules-gen:latest .
      Sending build context to Docker daemon  91.91MB
      Step 1/7 : FROM  openjdk:8-jre
       ---> 26ac3f63d29f
      Step 2/7 : MAINTAINER ptuxgk
       ---> Using cache
       ---> 76a2be41ec28
      Step 3/7 : VOLUME /usr/local/ruoyi
       ---> Using cache
       ---> c89d9c2269d7
      Step 4/7 : RUN mkdir -p /usr/local/ruoyi
       ---> Using cache
       ---> 2f78ffef79b6
      Step 5/7 : WORKDIR /usr/local/ruoyi
       ---> Using cache
       ---> 9d84c70972bd
      Step 6/7 : COPY ./jar/ruoyi-modules-gen.jar /usr/local/ruoyi/ruoyi-modules-gen.jar
       ---> 7d6e8933b07e
      Step 7/7 : ENTRYPOINT ["java","-jar","ruoyi-modules-gen.jar"]
       ---> Running in 5e155f7f1bb0
      Removing intermediate container 5e155f7f1bb0
       ---> 3916a45a66cb
      Successfully built 3916a45a66cb
      Successfully tagged ruoyi-cloud-modules-gen:latest
       3.5.5.4 查看镜像

      执行【docker images】命令查看当前镜像,如下所示。

      [root@node01 gen]# docker images
      REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
      ruoyi-cloud-modules-gen      latest              3916a45a66cb        23 seconds ago      365MB
      ruoyi-cloud-modules-system   latest              ac593d77af23        3 minutes ago       370MB
      ruoyi-cloud-auth             latest              7a78ed9189f5        15 minutes ago      354MB
      ruoyi-cloud-nacos            latest              9440a168a8aa        19 minutes ago      1.05GB
      ruoyi-cloud-gateway          latest              367e221b3f9e        32 minutes ago      362MB
      ruoyi-cloud-nginx            latest              ff1e85d673af        About an hour ago   148MB
      nginx                        latest              605c77e624dd        2 years ago         141MB
      openjdk                      8-jre               26ac3f63d29f        2 years ago         273MB
      nacos/nacos-server           latest              bdf60dc2ada3        2 years ago         1.05GB
      

      3.5.6 构建modules-job镜像

      3.5.6.1 上传jar包

      将编译构建的ruoyi-modules-job.jar包上传至/ruoyi-cloud/ruoyi/modules/job/jar目录下,如下图所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.5.6.2 编写镜像脚本文件

       在/ruoyi-cloud/ruoyi/modules/job目录新建一个名为Dockerfile镜像构建脚本,脚本内容如下:

      [root@node01 job]# vim Dockerfile
      # 基础镜像
      FROM  openjdk:8-jre
      # author
      MAINTAINER ptuxgk
      # 挂载目录
      VOLUME /usr/local/ruoyi
      # 创建目录
      RUN mkdir -p /usr/local/ruoyi
      # 指定路径
      WORKDIR /usr/local/ruoyi
      # 复制jar文件到路径
      COPY ./jar/ruoyi-modules-job.jar /usr/local/ruoyi/ruoyi-modules-job.jar
      # 启动定时任务服务
      ENTRYPOINT ["java","-jar","ruoyi-modules-job.jar"]
      
      3.5.6.3 构建modules-job镜像

      在/ruoyi-cloud/ruoyi/modules/job目录执行【docker build -t ruoyi-cloud-modules-job:latest .】命令拉取openjdk:8-jre基础镜像,并利用该基础镜像构建一个名为ruoyi-cloud-modules-job:latest的镜像,如下所示。

      [root@node01 job]# docker build -t ruoyi-cloud-modules-job:latest .
      Sending build context to Docker daemon  92.67MB
      Step 1/7 : FROM  openjdk:8-jre
       ---> 26ac3f63d29f
      Step 2/7 : MAINTAINER ptuxgk
       ---> Using cache
       ---> 76a2be41ec28
      Step 3/7 : VOLUME /usr/local/ruoyi
       ---> Using cache
       ---> c89d9c2269d7
      Step 4/7 : RUN mkdir -p /usr/local/ruoyi
       ---> Using cache
       ---> 2f78ffef79b6
      Step 5/7 : WORKDIR /usr/local/ruoyi
       ---> Using cache
       ---> 9d84c70972bd
      Step 6/7 : COPY ./jar/ruoyi-modules-job.jar /usr/local/ruoyi/ruoyi-modules-job.jar
       ---> 08641d804ab4
      Step 7/7 : ENTRYPOINT ["java","-jar","ruoyi-modules-job.jar"]
       ---> Running in 2bb4d9b724ce
      Removing intermediate container 2bb4d9b724ce
       ---> 01513e80cd57
      Successfully built 01513e80cd57
      Successfully tagged ruoyi-cloud-modules-job:latest
      
       3.5.6.4 查看镜像

      执行【docker images】命令查看当前镜像,如下所示。

      [root@node01 job]# docker images
      REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
      ruoyi-cloud-modules-job      latest              01513e80cd57        21 seconds ago      366MB
      ruoyi-cloud-modules-gen      latest              3916a45a66cb        4 minutes ago       365MB
      ruoyi-cloud-modules-system   latest              ac593d77af23        7 minutes ago       370MB
      ruoyi-cloud-auth             latest              7a78ed9189f5        20 minutes ago      354MB
      ruoyi-cloud-nacos            latest              9440a168a8aa        23 minutes ago      1.05GB
      ruoyi-cloud-gateway          latest              367e221b3f9e        37 minutes ago      362MB
      ruoyi-cloud-nginx            latest              ff1e85d673af        About an hour ago   148MB
      nginx                        latest              605c77e624dd        2 years ago         141MB
      openjdk                      8-jre               26ac3f63d29f        2 years ago         273MB
      nacos/nacos-server           latest              bdf60dc2ada3        2 years ago         1.05GB
      

      3.5.7 构建modules-file镜像

      3.5.7.1 上传jar包

      将编译构建的gateway jar包上传至/ruoyi-cloud/ruoyi/modules/file/jar目录下,如下图所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.5.7.2 编写镜像脚本文件

       在/ruoyi-cloud/ruoyi/modules/file目录新建一个名为Dockerfile镜像构建脚本,脚本内容如下:

      # 基础镜像
      FROM  openjdk:8-jre
      # author
      MAINTAINER ptuxgk
      # 挂载目录
      VOLUME /usr/local/ruoyi
      # 创建目录
      RUN mkdir -p /usr/local/ruoyi
      # 指定路径
      WORKDIR /usr/local/ruoyi
      # 复制jar文件到路径
      COPY ./jar/ruoyi-modules-file.jar /usr/local/ruoyi/ruoyi-modules-file.jar
      # 启动文件服务
      ENTRYPOINT ["java","-jar","ruoyi-modules-file.jar"]
      3.5.7.3 构建modules-file镜像

      在/ruoyi-cloud/ruoyi/modules/file目录执行【docker build -t ruoyi-cloud-modules-file:latest .】命令拉取openjdk:8-jre基础镜像,并利用该基础镜像构建一个名为ruoyi-cloud-modules-file:latest的镜像,如下所示。

      [root@node01 file]# docker build -t ruoyi-cloud-modules-file:latest .
      Sending build context to Docker daemon  88.43MB
      Step 1/7 : FROM  openjdk:8-jre
       ---> 26ac3f63d29f
      Step 2/7 : MAINTAINER ptuxgk
       ---> Using cache
       ---> 76a2be41ec28
      Step 3/7 : VOLUME /usr/local/ruoyi
       ---> Using cache
       ---> c89d9c2269d7
      Step 4/7 : RUN mkdir -p /usr/local/ruoyi
       ---> Using cache
       ---> 2f78ffef79b6
      Step 5/7 : WORKDIR /usr/local/ruoyi
       ---> Using cache
       ---> 9d84c70972bd
      Step 6/7 : COPY ./jar/ruoyi-modules-file.jar /usr/local/ruoyi/ruoyi-modules-file.jar
       ---> 6fe9acc36b82
      Step 7/7 : ENTRYPOINT ["java","-jar","ruoyi-modules-file.jar"]
       ---> Running in e78d700d45b2
      Removing intermediate container e78d700d45b2
       ---> a4fede44a76e
      Successfully built a4fede44a76e
      Successfully tagged ruoyi-cloud-modules-file:latest
      3.5.7.4 查看镜像

      执行【docker images】命令查看当前镜像,如下所示。

      [root@node01 file]# docker images
      REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
      ruoyi-cloud-modules-file     latest              a4fede44a76e        20 seconds ago      362MB
      ruoyi-cloud-modules-job      latest              01513e80cd57        7 minutes ago       366MB
      ruoyi-cloud-modules-gen      latest              3916a45a66cb        11 minutes ago      365MB
      ruoyi-cloud-modules-system   latest              ac593d77af23        15 minutes ago      370MB
      ruoyi-cloud-auth             latest              7a78ed9189f5        27 minutes ago      354MB
      ruoyi-cloud-nacos            latest              9440a168a8aa        30 minutes ago      1.05GB
      ruoyi-cloud-gateway          latest              367e221b3f9e        44 minutes ago      362MB
      ruoyi-cloud-nginx            latest              ff1e85d673af        About an hour ago   148MB
      nginx                        latest              605c77e624dd        2 years ago         141MB
      openjdk                      8-jre               26ac3f63d29f        2 years ago         273MB
      nacos/nacos-server           latest              bdf60dc2ada3        2 years ago         1.05GB

      3.5.8  构建mysql镜像

      3.5.8.1 上传sql脚本文件

      将源码目录下的sql文件夹中的所有sql文件上传至/ruoyi-cloud/mysql/db目录下,如下图所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.5.8.2 编写镜像脚本文件

       在/ruoyi-cloud/mysql/目录新建一个名为Dockerfile镜像构建脚本,脚本内容如下:

      [root@node01 mysql]# vim Dockerfile
      # 基础镜像
      FROM mysql:5.7
      # author
      MAINTAINER ptuxgk
      # 执行sql脚本
      ADD ./db/*.sql /docker-entrypoint-initdb.d/
      
      3.5.8.3 构建mysql镜像

      在/ruoyi-cloud/mysql/目录执行【docker build -t ruoyi-cloud-mysql:latest .】命令拉取mysql:5.7基础镜像,并利用该基础镜像构建一个名为ruoyi-cloud-mysql:latest的镜像,如下所示。

      [root@node01 mysql]# docker build -t ruoyi-cloud-mysql:latest .
      Sending build context to Docker daemon  96.26kB
      Step 1/3 : FROM mysql:5.7
      5.7: Pulling from library/mysql
      72a69066d2fe: Pull complete 
      93619dbc5b36: Pull complete 
      99da31dd6142: Pull complete 
      626033c43d70: Pull complete 
      37d5d7efb64e: Pull complete 
      ac563158d721: Pull complete 
      d2ba16033dad: Pull complete 
      0ceb82207cd7: Pull complete 
      37f2405cae96: Pull complete 
      e2482e017e53: Pull complete 
      70deed891d42: Pull complete 
      Digest: sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94
      Status: Downloaded newer image for mysql:5.7
       ---> c20987f18b13
      Step 2/3 : MAINTAINER ptuxgk
       ---> Running in 6b14168e615b
      Removing intermediate container 6b14168e615b
       ---> b5bee4a42df1
      Step 3/3 : ADD ./db/*.sql /docker-entrypoint-initdb.d/
       ---> da0cceb9be97
      Successfully built da0cceb9be97
      Successfully tagged ruoyi-cloud-mysql:latest
      
      3.5.8.4 查看镜像

      执行【docker images】命令查看当前镜像,如下所示。

      [root@node01 mysql]# docker images
      REPOSITORY                   TAG                 IMAGE ID            CREATED              SIZE
      ruoyi-cloud-mysql            latest              da0cceb9be97        About a minute ago   448MB
      ruoyi-cloud-modules-file     latest              a4fede44a76e        22 minutes ago       362MB
      ruoyi-cloud-modules-job      latest              01513e80cd57        30 minutes ago       366MB
      ruoyi-cloud-modules-gen      latest              3916a45a66cb        34 minutes ago       365MB
      ruoyi-cloud-modules-system   latest              ac593d77af23        37 minutes ago       370MB
      ruoyi-cloud-auth             latest              7a78ed9189f5        About an hour ago    354MB
      ruoyi-cloud-nacos            latest              9440a168a8aa        About an hour ago    1.05GB
      ruoyi-cloud-gateway          latest              367e221b3f9e        About an hour ago    362MB
      ruoyi-cloud-nginx            latest              ff1e85d673af        About an hour ago    148MB
      nginx                        latest              605c77e624dd        2 years ago          141MB
      openjdk                      8-jre               26ac3f63d29f        2 years ago          273MB
      mysql                        5.7                 c20987f18b13        2 years ago          448MB
      nacos/nacos-server           latest              bdf60dc2ada3        2 years ago          1.05GB
      

      3.5.9 构建redis镜像

      3.5.1.1 上传redis配置文件

      将conf文件夹中的redis.conf配置文件上传至/ruoyi-cloud/redis/conf目录下,如下图所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.5.1.2 编写镜像脚本文件

       在/ruoyi-cloud/redis/目录新建一个名为Dockerfile镜像构建脚本,脚本内容如下:

      [root@node01 redis]# vim Dockerfile
      # 基础镜像
      FROM redis
      # author
      MAINTAINER ptuxgk
      # 挂载目录
      VOLUME /usr/local/ruoyi/redis
      # 创建目录
      RUN mkdir -p /usr/local/ruoyi/redis
      # 指定路径
      WORKDIR /usr/local/ruoyi/redis
      # 复制conf文件到路径
      COPY ./conf/redis.conf /usr/local/ruoyi/redis/redis.conf
      3.5.1.3 构建redis镜像

      在/ruoyi-cloud/redis/目录执行【docker build -t ruoyi-cloud-redis:latest .】命令拉取redis基础镜像,并利用该基础镜像构建一个名为ruoyi-cloud-redis:latest的镜像,如下所示。

      [root@node01 redis]# docker build -t ruoyi-cloud-redis:latest .
      Sending build context to Docker daemon  3.584kB
      Step 1/6 : FROM redis
      latest: Pulling from library/redis
      a2abf6c4d29d: Already exists 
      c7a4e4382001: Pull complete 
      4044b9ba67c9: Pull complete 
      c8388a79482f: Pull complete 
      413c8bb60be2: Pull complete 
      1abfd3011519: Pull complete 
      Digest: sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
      Status: Downloaded newer image for redis:latest
       ---> 7614ae9453d1
      Step 2/6 : MAINTAINER ptuxgk
       ---> Running in 3531ad1fd1df
      Removing intermediate container 3531ad1fd1df
       ---> 79e9a430c919
      Step 3/6 : VOLUME /usr/local/ruoyi/redis
       ---> Running in bc2bf4a99f25
      Removing intermediate container bc2bf4a99f25
       ---> fb9b7a4199dc
      Step 4/6 : RUN mkdir -p /usr/local/ruoyi/redis
       ---> Running in c6bd7c42e536
      Removing intermediate container c6bd7c42e536
       ---> 83ae1f12a519
      Step 5/6 : WORKDIR /usr/local/ruoyi/redis
       ---> Running in 9d6872c243da
      Removing intermediate container 9d6872c243da
       ---> f2467655cf9a
      Step 6/6 : COPY ./conf/redis.conf /usr/local/ruoyi/redis/redis.conf
       ---> 99dee3e00862
      Successfully built 99dee3e00862
      Successfully tagged ruoyi-cloud-redis:latest
      
       3.5.2.4 查看镜像

      执行【docker images】命令查看当前镜像,如下所示。

      [root@node01 redis]# docker images
      REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
      ruoyi-cloud-redis            latest              99dee3e00862        55 seconds ago      113MB
      ruoyi-cloud-mysql            latest              da0cceb9be97        2 minutes ago       448MB
      ruoyi-cloud-modules-file     latest              a4fede44a76e        23 minutes ago      362MB
      ruoyi-cloud-modules-job      latest              01513e80cd57        31 minutes ago      366MB
      ruoyi-cloud-modules-gen      latest              3916a45a66cb        35 minutes ago      365MB
      ruoyi-cloud-modules-system   latest              ac593d77af23        38 minutes ago      370MB
      ruoyi-cloud-auth             latest              7a78ed9189f5        About an hour ago   354MB
      ruoyi-cloud-nacos            latest              9440a168a8aa        About an hour ago   1.05GB
      ruoyi-cloud-gateway          latest              367e221b3f9e        About an hour ago   362MB
      ruoyi-cloud-nginx            latest              ff1e85d673af        About an hour ago   148MB
      nginx                        latest              605c77e624dd        2 years ago         141MB
      openjdk                      8-jre               26ac3f63d29f        2 years ago         273MB
      redis                        latest              7614ae9453d1        2 years ago         113MB
      mysql                        5.7                 c20987f18b13        2 years ago         448MB
      nacos/nacos-server           latest              bdf60dc2ada3        2 years ago         1.05GB

      3.5.10 构建visual-monitor镜像

      3.5.10.1 上传jar包

      将编译构建的ruoyi-visual-monitor.jar包上传至/ruoyi-cloud/ruoyi/visual/monitor/jar目录下,如下图所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.5.10.2 编写镜像脚本文件

       在/ruoyi-cloud/ruoyi/visual/monitor目录新建一个名为Dockerfile镜像构建脚本,脚本内容如下:

      [root@node01 monitor]# vim Dockerfile
      # 基础镜像
      FROM  openjdk:8-jre
      # author
      MAINTAINER ruoyi
      # 挂载目录
      VOLUME /usr/local/ruoyi
      # 创建目录
      RUN mkdir -p /usr/local/ruoyi
      # 指定路径
      WORKDIR /usr/local/ruoyi
      # 复制jar文件到路径
      COPY ./jar/ruoyi-visual-monitor.jar /usr/local/ruoyi/ruoyi-visual-monitor.jar
      # 启动系统服务
      ENTRYPOINT ["java","-jar","ruoyi-visual-monitor.jar"]
      
      3.5.10.3 构建visual-monitor镜像

      在/ruoyi-cloud/ruoyi/visual/monitor目录执行【docker build -t ruoyi-cloud-visual-monitor:latest .】命令拉取openjdk:8-jre基础镜像,并利用该基础镜像构建一个名为ruoyi-cloud-visual-monitor:latest的镜像,如下所示。

      [root@node01 monitor]# docker build -t ruoyi-cloud-visual-monitor:latest .
      Sending build context to Docker daemon   55.5MB
      Step 1/7 : FROM  openjdk:8-jre
       ---> 26ac3f63d29f
      Step 2/7 : MAINTAINER ruoyi
       ---> Running in a839c0e5c9dc
      Removing intermediate container a839c0e5c9dc
       ---> 593e413b44e2
      Step 3/7 : VOLUME /usr/local/ruoyi
       ---> Running in 99b4b6ea8b72
      Removing intermediate container 99b4b6ea8b72
       ---> c0152c8a24b8
      Step 4/7 : RUN mkdir -p /usr/local/ruoyi
       ---> Running in b737e342a326
      Removing intermediate container b737e342a326
       ---> 569986aab06e
      Step 5/7 : WORKDIR /usr/local/ruoyi
       ---> Running in 83c2806b5a50
      Removing intermediate container 83c2806b5a50
       ---> ca25eef05d2f
      Step 6/7 : COPY ./jar/ruoyi-visual-monitor.jar /usr/local/ruoyi/ruoyi-visual-monitor.jar
       ---> feec4bbfabd9
      Step 7/7 : ENTRYPOINT ["java","-jar","ruoyi-visual-monitor.jar"]
       ---> Running in 903e48f5c095
      Removing intermediate container 903e48f5c095
       ---> f12cca59d7f2
      Successfully built f12cca59d7f2
      Successfully tagged ruoyi-cloud-visual-monitor:latest
      
       3.5.10.4 查看镜像

      执行【docker images】命令查看当前镜像,如下所示。

      [root@node01 monitor]# docker images
      REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
      ruoyi-cloud-visual-monitor   latest              f12cca59d7f2        20 seconds ago      329MB
      ruoyi-cloud-redis            latest              99dee3e00862        2 minutes ago       113MB
      ruoyi-cloud-mysql            latest              da0cceb9be97        4 minutes ago       448MB
      ruoyi-cloud-modules-file     latest              a4fede44a76e        25 minutes ago      362MB
      ruoyi-cloud-modules-job      latest              01513e80cd57        32 minutes ago      366MB
      ruoyi-cloud-modules-gen      latest              3916a45a66cb        37 minutes ago      365MB
      ruoyi-cloud-modules-system   latest              ac593d77af23        40 minutes ago      370MB
      ruoyi-cloud-auth             latest              7a78ed9189f5        About an hour ago   354MB
      ruoyi-cloud-nacos            latest              9440a168a8aa        About an hour ago   1.05GB
      ruoyi-cloud-gateway          latest              367e221b3f9e        About an hour ago   362MB
      ruoyi-cloud-nginx            latest              ff1e85d673af        2 hours ago         148MB
      nginx                        latest              605c77e624dd        2 years ago         141MB
      openjdk                      8-jre               26ac3f63d29f        2 years ago         273MB
      redis                        latest              7614ae9453d1        2 years ago         113MB
      mysql                        5.7                 c20987f18b13        2 years ago         448MB
      nacos/nacos-server           latest              bdf60dc2ada3        2 years ago         1.05GB

      3.6 综合排编与部署

      成功完成上述镜像构建后,就可能利用这些镜像来综合编排容器和部署项目了。

      3.6.1 编写编排配置文件

      在服务器的/ruoyi-cloud/script/目录下,新建一个名为docker-compose.yml的配置文件,文件内容如下,默认情况下,部分容器会占用较多内存并导致系统卡死,这里对这些容器占用资源进行了限制。

      [root@node01 script]# vim docker-compose.yml
      ---
      version : '3'
      services:
        ruoyi-cloud-nacos:
          image: ruoyi-cloud-nacos:latest
          container_name: ruoyi-cloud-nacos
          environment:
            - MODE=standalone
          volumes:
            - ../nacos/logs/:/usr/local/nacos/logs
            - ../nacos/conf/application.properties:/home/nacos/conf/application.properties
          ports:
            - "58848:8848"
            - "59848:9848"
            - "59849:9849"
          networks:
            - ruoyi-cloud
          depends_on:
            - ruoyi-cloud-mysql
        ruoyi-cloud-mysql:
          image: ruoyi-cloud-mysql:latest
          container_name: ruoyi-cloud-mysql
          ports:
            - "53406:3306"
          networks:
            - ruoyi-cloud
          volumes:
            - ../mysql/conf:/etc/mysql/conf.d
            - ../mysql/logs:/logs
            - ../mysql/data:/var/lib/mysql
          command: [
                'mysqld',
                '--innodb-buffer-pool-size=80M',
                '--character-set-server=utf8mb4',
                '--collation-server=utf8mb4_unicode_ci',
                '--default-time-zone=+8:00',
                '--lower-case-table-names=1'
              ]
          environment:
            MYSQL_DATABASE: 'ry-cloud'
            MYSQL_ROOT_PASSWORD: password
        ruoyi-cloud-redis:
          image: ruoyi-cloud-redis:latest
          container_name: ruoyi-cloud-redis
          ports:
            - "56379:6379"
          networks:
            - ruoyi-cloud
          volumes:
            - ../redis/conf/redis.conf:/usr/local/ruoyi/redis/redis.conf
            - ../redis/data:/data
          command: redis-server /usr/local/ruoyi/redis/redis.conf
        ruoyi-cloud-nginx:    
          image: ruoyi-cloud-nginx:latest
          container_name: ruoyi-cloud-nginx
          ports:
            - "50180:80"
          networks:
            - ruoyi-cloud
          volumes:
            - ../nginx/dist:/usr/local/ruoyi/dist
            - ../nginx/conf/nginx.conf:/etc/nginx/nginx.conf
            - ../nginx/logs:/var/log/nginx
            - ../nginx/conf.d:/etc/nginx/conf.d
          depends_on:
            - ruoyi-cloud-gateway
          links:
            - ruoyi-cloud-gateway
        ruoyi-cloud-gateway:
          image: ruoyi-cloud-gateway:latest
          container_name: ruoyi-cloud-gateway
          ports:
            - "58180:8080"
          networks:
            - ruoyi-cloud
          depends_on:
            - ruoyi-cloud-redis
          links:
            - ruoyi-cloud-redis
          deploy:
            resources:
              limits:
                memory: 512M
        ruoyi-cloud-auth:
          image: ruoyi-cloud-auth:latest
          container_name: ruoyi-cloud-auth
          ports:
            - "59200:9200"
          networks:
            - ruoyi-cloud
          depends_on:
            - ruoyi-cloud-redis
          links:
            - ruoyi-cloud-redis
          deploy:
            resources:
              limits:
                memory: 512M
        ruoyi-cloud-modules-system:
          image: ruoyi-cloud-modules-system:latest
          container_name: ruoyi-cloud-modules-system
          ports:
            - "59201:9201"
          networks:
            - ruoyi-cloud
          depends_on:
            - ruoyi-cloud-redis
            - ruoyi-cloud-mysql
          links:
            - ruoyi-cloud-redis
            - ruoyi-cloud-mysql
          deploy:
            resources:
              limits:
                memory: 512M
        ruoyi-cloud-modules-gen:
          image: ruoyi-cloud-modules-gen:latest
          container_name: ruoyi-cloud-modules-gen
          ports:
            - "59202:9202"
          networks:
            - ruoyi-cloud
          depends_on:
            - ruoyi-cloud-mysql
          links:
            - ruoyi-cloud-mysql
          deploy:
            resources:
              limits:
                memory: 512M
        ruoyi-cloud-modules-job:
          image: ruoyi-cloud-modules-job:latest
          container_name: ruoyi-cloud-modules-job
          ports:
            - "59203:9203"
          networks:
            - ruoyi-cloud
          depends_on:
            - ruoyi-cloud-mysql
          links:
            - ruoyi-cloud-mysql
          deploy:
            resources:
              limits:
                memory: 512M
        ruoyi-cloud-modules-file:
          image: ruoyi-cloud-modules-file:latest
          container_name: ruoyi-cloud-modules-file
          ports:
            - "59300:9300"
          networks:
            - ruoyi-cloud
          volumes:
          - ../uploadPath:/usr/local/ruoyi/uploadPath
          deploy:
            resources:
              limits:
                memory: 512M
        ruoyi-cloud-visual-monitor:
          image: ruoyi-cloud-visual-monitor:latest
          container_name: ruoyi-cloud-visual-monitor
          ports:
            - "59100:9100"
          networks:
            - ruoyi-cloud
          deploy:
            resources:
              limits:
                memory: 512M
      networks:
        ruoyi-cloud:
          external: true

      3.6.2 一键部署系统基础模块

      在/ruoyi-cloud/script目录执行【docker network create ruoyi-cloud】创建一个容器网络ruoyi-cloud,然后执行【docker-compose --compatibility up -d ruoyi-cloud-mysql ruoyi-cloud-nacos ruoyi-cloud-redis】命令创建并启动三个系统基础模块容器,如下所示。

      # 创建一个容器网络
      [root@node01 script]# docker network create ruoyi-cloud
      # 一键部署系统基础模块,--compatibility为兼容性选项,用于限制容器启动内存
      [root@node01 script]# docker-compose --compatibility up -d ruoyi-cloud-mysql ruoyi-cloud-nacos ruoyi-cloud-redis
      Creating ruoyi-cloud-redis ... done
      Creating ruoyi-cloud-mysql ... done
      Creating ruoyi-cloud-nacos ... done
      

      注1:由于对容器占用内存作了限制,在创建容器时,要求使用兼容性选项--compatibility。

      注2:如果直接执行【docker-compose --compatibility up -d】 命令创建并启动系统所有模块容器,除上述三个基础模块容器外,其它容器均会提示启动失败。

      3.6.3 查看容器状态

      执行【docker ps -a】命令查看当前容器状态,如下所示。

      [root@node01 script]# docker ps -a
      CONTAINER ID        IMAGE                COMMAND                  CREATED              STATUS              PORTS       NAMES
      28ea80e2d018        ruoyi-cloud-nacos:latest   "bin/docker-startup.…"   About a minute ago   Up About a minute   0.0.0.0:8848->8848/tcp, 0.0.0.0:9848-9849->9848-9849/tcp   ruoyi-cloud-nacos
      1f4abc94dd75        ruoyi-cloud-mysql:latest   "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:3306->3306/tcp, 33060/tcp                          ruoyi-cloud-mysql
      ba790f1bceb0        ruoyi-cloud-redis:latest   "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:6379->6379/tcp                                     ruoyi-cloud-redis
      

      三个容器状态似乎都没有问题,但查看ruoyi-cloud-nacos容器的日志会发现有以下错误提示:

      [root@node01 script]# docker logs ruoyi-cloud-nacos
      	……此处省略其它日志输出……
      Caused by: com.alibaba.nacos.api.exception.NacosException: Nacos Server did not start because dumpservice bean construction failure :
      No DataSource set
      	……此处省略其它日志输出……
      Caused by: java.lang.IllegalStateException: No DataSource set
      

      3.6.4 配置防火墙

      出现上述错误的原因是因为防火墙,配置防火墙放通容器网络。

      # 查看容器网络
      [root@node01 script]# docker network ls
      NETWORK ID          NAME                DRIVER              SCOPE
      75ae92573500        bridge              bridge              local
      2c8011d171c5        host                host                local
      181f90b4ae0a        none                null                local
      7537065cc31e        script_default      bridge              local #放通此容器网络
      # 放通容器网络接口
      [root@node01 script]# firewall-cmd --permanent --add-interface=br-7537065cc31e 
      success
      # 重载防火墙,使上述配置立即生效
      [root@node01 script]# firewall-cmd --reload 
      success
      

      注:如果在云服务器上部署,还需要配置安全组,放通redis容器的外部端口(如8848),如果有配置NAT网关,在DNAT规则中将redis容器的外部端口进行再映射。 

      3.6.5 重启容器

      完成防火墙的配置后,执行【docker-compose restart】命令重启容器,再次查看容器状态及日志,可以看到一切正常。

      [root@node01 script]# docker-compose restart 
      Restarting ruoyi-cloud-nacos ... done
      Restarting ruoyi-cloud-mysql ... done
      Restarting ruoyi-cloud-redis ... done
      

      3.7 配置nacos

      3.7.1 登录nacos配置中心

      稍候片刻后,打开客户机浏览器,访问http://服务器IP:8848/nacos,打开如下所示界面。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      默认登录账号和密码均为nacos,登录后的页面如下图所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.7.2 配置ruoyi-gateway-dev.yml

      在nacos配置中心的配置列表中,点击ruoyi-gateway-dev.yml右侧的“编辑”,在打开的页面中,将localhost改为redis容器名称,并设置password的值修改成3.1.6节中redis.conf配置文件中指定的值,其它默认,如下所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      确认无误后,点击右下角的“发布”按钮发布新的配置。 

      3.7.3 配置ruoyi-auth-dev.yml

      在nacos配置中心的配置列表中,点击ruoyi-auth-dev.yml右侧的“编辑”,在打开的页面中,将localhost改为redis容器名称,并设置password的值修改成3.1.6节中redis.conf配置文件中指定的值,其它默认,如下所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

       确认无误后,点击右下角的“发布”按钮发布新的配置。

      3.7.4 配置ruoyi-system-dev.yml

      在nacos配置中心的配置列表中,点击ruoyi-system-dev.yml右侧的“编辑”,在打开的页面中,在redis节,将localhost改为redis容器名称,并设置password的值修改成3.1.6节中redis.conf配置文件中指定的值,如下所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      在数据源datasource节,将localhost改为mysql容器名称,密码与3.1.4节中nacos配置文件中的一致。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      其它默认,确认无误后,点击右下角的“发布”按钮发布新的配置。

      3.7.5 配置ruoyi-gen-dev.yml

      在nacos配置中心的配置列表中,点击ruoyi-gen-dev.yml右侧的“编辑”,在打开的页面中,配置内容与3.7.4节一样,不再赘述,如下图所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.7.3 配置ruoyi-job-dev.yml

      在nacos配置中心的配置列表中,点击ruoyi-job-dev.yml右侧的“编辑”,在打开的页面中,配置内容与3.7.4节一样,不再赘述,如下图所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.7.6 配置ruoyi-file-dev.yml

      在nacos配置中心的配置列表中,点击ruoyi-file-dev.yml右侧的“编辑”,在打开的页面中,将端口号9300前面的127.0.0.1改为容器名称,path值可根据自身情况修改,如下所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      3.8 部署系统业务模块

      3.8.1 一键部署系统业务模块

      在/ruoyi-cloud/script目录,执行【docker-compose --compatibility up -d】命令创建并启动所有系统业务模块,如下所示。前面已创建和启动的基础模块容器不会再重新创建。

      [root@node01 script]# docker-compose up --compatibility -d
      ruoyi-mysql is up-to-date
      Starting ruoyi-cloud-visual-monitor   ... 
      Starting ruoyi-cloud-visual-monitor   ... done
      Starting ruoyi-cloud-modules-file     ... done
      Starting ruoyi-cloud-modules-job      ... done
      Starting ruoyi-cloud-modules-gen      ... done
      Creating ruoyi-cloud-redis            ... done
      Recreating ruoyi-cloud-modules-system ... done
      Recreating ruoyi-cloud-gateway        ... done
      Recreating ruoyi-cloud-auth           ... done
      Recreating ruoyi-cloud-nginx          ... done

      注:如果在3.6.2节已全部创建容器,在此处执行【docker-compose restart】 命令重启容器即可,也可以执行【docker-compose --compatibility up -d】命令重新创建和启动。

      3.8.2 查看容器状态

      稍等2-3分钟后,执行【docker ps -a】 命令查看所有容器状态,可看到所有容器状态正常。

      [root@node01 script]# docker ps -a
      CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS       NAMES
      e207b08b5998        ruoyi-cloud-nginx:latest            "/docker-entrypoint.…"   3 minutes ago       Up 3 minutes        0.0.0.0:80->80/tcp                                         ruoyi-cloud-nginx
      b09be5ad850f        ruoyi-cloud-auth:latest             "java -jar ruoyi-aut…"   3 minutes ago       Up 3 minutes        0.0.0.0:9200->9200/tcp                                     ruoyi-cloud-auth
      8645a9be7384        ruoyi-cloud-modules-system:latest   "java -jar ruoyi-mod…"   3 minutes ago       Up 3 minutes        0.0.0.0:9201->9201/tcp                                     ruoyi-cloud-modules-system
      46c16d6f9633        ruoyi-cloud-gateway:latest          "java -jar ruoyi-gat…"   3 minutes ago       Up 3 minutes        0.0.0.0:8080->8080/tcp                                     ruoyi-cloud-gateway
      aa276498e97e        ruoyi-cloud-redis:latest            "docker-entrypoint.s…"   3 minutes ago       Up 3 minutes        0.0.0.0:6379->6379/tcp                                     ruoyi-cloud-redis
      272d50eb324e        ruoyi-cloud-modules-job:latest      "java -jar ruoyi-mod…"   7 hours ago         Up 3 minutes        0.0.0.0:9203->9203/tcp                                     ruoyi-cloud-modules-job
      0106674fd03d        ruoyi-cloud-modules-gen:latest      "java -jar ruoyi-mod…"   7 hours ago         Up 3 minutes        0.0.0.0:9202->9202/tcp                                     ruoyi-cloud-modules-gen
      5c00e63ed09e        ruoyi-cloud-visual-monitor:latest   "java -jar ruoyi-vis…"   7 hours ago         Up 3 minutes        0.0.0.0:9100->9100/tcp                                     ruoyi-cloud-visual-monitor
      05c14c6abbc3        ruoyi-cloud-modules-file:latest     "java -jar ruoyi-mod…"   7 hours ago         Up 3 minutes        0.0.0.0:9300->9300/tcp                                     ruoyi-cloud-modules-file
      757bcbc8658e        ruoyi-cloud-nacos:latest            "bin/docker-startup.…"   8 hours ago         Up 7 hours          0.0.0.0:8848->8848/tcp, 0.0.0.0:9848-9849->9848-9849/tcp   ruoyi-cloud-nacos
      659d413cde82        ruoyi-cloud-mysql:latest            "docker-entrypoint.s…"   9 hours ago         Up 7 hours          0.0.0.0:3306->3306/tcp, 33060/tcp                          ruoyi-cloud-mysql
      

      3.9 测试访问

      在客户机,打开浏览器,访问虚拟机IP地址,可成功访问前端登录页面,如下图所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      注:若提示404错误,且验证码无法显示,请检查mysql基础镜像是否为5.7, Java环境基础镜像是否为openjdk:8jre,系统内存是否足够大(经测试要求大于8GB);磁盘空间是否足够。如果上述四个条件都满足,就请再排查其它错误吧。

      以默认的管理员账号admin/admin123登录,可成功访问后端页面,如下图所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

      访问服务器IP:9100,可监控系统服务状态,默认账号密码为ruoyi/123456(3.7节中ruoyi-monitor-dev.yml配置文件中可查看和修改)

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

       访问服务器IP:8080/swagger-ui/index.html#/gen-controller,可成功访问代理生成接口文档,如下图所示。

      基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署

转载请注明来自码农世界,本文标题:《基于openEuler22.03 LTS环境的容器项目实训——分布式微服务项目部署》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,81人围观)参与讨论

还没有评论,来说两句吧...

Top