一、说明
本文配置环境为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”,
点击左侧的“镜像资源”-->“镜像中心”,然后点击右上角的“镜像加速器”,打开如下图所示的窗口,并按其中的操作说明修改/etc/docker/daemon.json文件即可。
阿里云的容器加速器服务可参考帮助: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部署该项目的部署架构如下图所示。
上图中,各容器实例提供的服务简介绍如下:
- 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压缩包。
解压后的文件和目录如下:
3.1.3 修改配置文件
3.1.3.1 修改ruoyi-auth配置文件
编辑源码目录\ruoyi-auth\src\main\resources下的bootstrap.yml配置文件,将其中的127.0.0.1替换成nacos容器名称,如下所示。
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地址,端口号更改为服务器对外映射端口(如果有的话),如下所示。
3.1.3.3 修改ruoyi-modules-file配置文件
编辑源码目录\ruoyi-modules\ruoyi-file\src\main\resources下的bootstrap.yml配置文件,将其中的127.0.0.1替换成nacos容器名,如下所示。
3.1.3.4 修改ruoyi-modules-gen配置文件
编辑源码目录\ruoyi-modules\ruoyi-gen\src\main\resources下的bootstrap.yml配置文件,将其中的127.0.0.1替换成nacos容器名,如下所示。
3.1.3.5 修改ruoyi-modules-job配置文件
编辑源码目录\ruoyi-modules\ruoyi-job\src\main\resources下的bootstrap.yml配置文件,将其中的127.0.0.1替换成nacos容器名,如下所示。
3.1.3.6 修改ruoyi-modules-system配置文件
编辑源码目录\ruoyi-modules\ruoyi-system\src\main\resources下的bootstrap.yml配置文件,将其中的127.0.0.1替换成nacos容器名,如下所示。
3.1.3.7 修改ruoyi-monitor配置文件
编辑源码目录\ruoyi-visual\ruoyi-monitor\src\main\resources下的bootstrap.yml配置文件,将其中的127.0.0.1替换成nacos容器名,如下所示。
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目录中建立如下图所示的目录结构。
示例命令如下:
[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则为测试环境,以下以构建生产环境为例。
在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/目录,如下图所示。
3.3.2 上传nginx配置文件
将conf文件夹下的nginx.conf文件利用xftp上传至Linux服务器的/ruoyi-cloud/nginx/conf目录,如下图所示。
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编译构建过程如下所示。
将编译构建的jar包复制保存在本地某个目录(比如源码根目录下的jar)。
3.5 构建后端镜像
3.5.1 构建gateway镜像
3.5.1.1 上传jar包
将编译构建的ruoyi-gateway.jar包上传至/ruoyi-cloud/ruoyi/gateway/jar目录下,如下图所示。
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目录下,如下图所示。
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目录下,如下图所示。
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目录下,如下图所示。
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目录下,如下图所示。
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目录下,如下图所示。
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目录下,如下图所示。
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目录下,如下图所示。
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目录下,如下图所示。
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目录下,如下图所示。
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,打开如下所示界面。
默认登录账号和密码均为nacos,登录后的页面如下图所示。
3.7.2 配置ruoyi-gateway-dev.yml
在nacos配置中心的配置列表中,点击ruoyi-gateway-dev.yml右侧的“编辑”,在打开的页面中,将localhost改为redis容器名称,并设置password的值修改成3.1.6节中redis.conf配置文件中指定的值,其它默认,如下所示。
确认无误后,点击右下角的“发布”按钮发布新的配置。
3.7.3 配置ruoyi-auth-dev.yml
在nacos配置中心的配置列表中,点击ruoyi-auth-dev.yml右侧的“编辑”,在打开的页面中,将localhost改为redis容器名称,并设置password的值修改成3.1.6节中redis.conf配置文件中指定的值,其它默认,如下所示。
确认无误后,点击右下角的“发布”按钮发布新的配置。
3.7.4 配置ruoyi-system-dev.yml
在nacos配置中心的配置列表中,点击ruoyi-system-dev.yml右侧的“编辑”,在打开的页面中,在redis节,将localhost改为redis容器名称,并设置password的值修改成3.1.6节中redis.conf配置文件中指定的值,如下所示。
在数据源datasource节,将localhost改为mysql容器名称,密码与3.1.4节中nacos配置文件中的一致。
其它默认,确认无误后,点击右下角的“发布”按钮发布新的配置。
3.7.5 配置ruoyi-gen-dev.yml
在nacos配置中心的配置列表中,点击ruoyi-gen-dev.yml右侧的“编辑”,在打开的页面中,配置内容与3.7.4节一样,不再赘述,如下图所示。
3.7.3 配置ruoyi-job-dev.yml
在nacos配置中心的配置列表中,点击ruoyi-job-dev.yml右侧的“编辑”,在打开的页面中,配置内容与3.7.4节一样,不再赘述,如下图所示。
3.7.6 配置ruoyi-file-dev.yml
在nacos配置中心的配置列表中,点击ruoyi-file-dev.yml右侧的“编辑”,在打开的页面中,将端口号9300前面的127.0.0.1改为容器名称,path值可根据自身情况修改,如下所示。
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地址,可成功访问前端登录页面,如下图所示。
注:若提示404错误,且验证码无法显示,请检查mysql基础镜像是否为5.7, Java环境基础镜像是否为openjdk:8jre,系统内存是否足够大(经测试要求大于8GB);磁盘空间是否足够。如果上述四个条件都满足,就请再排查其它错误吧。
以默认的管理员账号admin/admin123登录,可成功访问后端页面,如下图所示。
访问服务器IP:9100,可监控系统服务状态,默认账号密码为ruoyi/123456(3.7节中ruoyi-monitor-dev.yml配置文件中可查看和修改)
访问服务器IP:8080/swagger-ui/index.html#/gen-controller,可成功访问代理生成接口文档,如下图所示。
还没有评论,来说两句吧...