一、说明
本文配置环境为VMware虚拟机(2核CPU,4 GB内存,40GB磁盘),OS为openEuler 22.03 LTS ,虚拟机要求能联网。
二、安装docker环境
2.1 安装docker相关软件包
bash
[root@node01 ~]# dnf -y install docker docker-compose
2.2 查看docker版本
bash
[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**文件即可。
2.4 重启docker服务并设置为开机自启动
完成上述操作后,重启docker服务,命令如下:
bash
[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
根据官方文档信息,系统模板如下:
bash
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】命令的输出均为空,如下图所示。
bash
[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容器名ruoyi-nacos,如下所示。
3.1.3.2 修改 ruoyi-gateway配置文件
编辑源码目录\ruoyi-gateway\src\main\resources下的bootstrap.yml配置文件,将其中端口号为8848前面的127.0.0.1替换成nacos容器名ruoyi-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容器名ruoyi-nacos,如下所示。
3.1.3.4 修改ruoyi- modules**-gen配置文件**
编辑源码目录\ruoyi-modules\ruoyi-gen\src\main\resources下的bootstrap.yml配置文件,将其中的127.0.0.1替换成nacos容器名ruoyi-nacos,如下所示。
3.1.3.5 修改ruoyi- modules**-job配置文件**
编辑源码目录\ruoyi-modules\ruoyi-job\src\main\resources下的bootstrap.yml配置文件,将其中的127.0.0.1替换成nacos容器名ruoyi-nacos,如下所示。
3.1.3.6 修改ruoyi- modules**-system配置文件**
编辑源码目录\ruoyi-modules\ruoyi-system\src\main\resources下的bootstrap.yml配置文件,将其中的127.0.0.1替换成nacos容器名ruoyi-nacos,如下所示。
3.1.3.7 修改 ruoyi-monitor配置文件
编辑源码目录\ruoyi-visual\ruoyi-monitor\src\main\resources下的bootstrap.yml配置文件,将其中的127.0.0.1替换成nacos容器名ruoyi-nacos,如下所示。
3.1.4 准备nacos配置文件
在源码根目录下新建一个名为conf的目录,并利用文本编辑器(如notepad++)新建一个名为application.properties的文本文件,文件内容如下,并将该文件保存在conf目录中。
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://ruoyi-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-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;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
# 配置反向代理,所有对/prod-api接口的访问均代理至ruoyi-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-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 <DIR> .
2024/05/12 17:52 <DIR> ..
2024/05/12 17:52 5,561 favicon.ico
2024/05/12 17:52 <DIR> 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 <DIR> static
4 个文件 21,639 字节
4 个目录 219,372,675,072 可用字节
3.3 构建前端镜像
3.3.1 上传前端文件
将前端项目打包的dist文件夹利用xftp上传至Linux服务器的/ruoyi-cloud/目录,如下图所示。
3.3.2 上传配置文件
将conf文件夹下的nginx.conf文件利用xftp上传至Linux服务器的/ruoyi-cloud/nginx/conf目录,如下图所示。
3.3.3 编写前端镜像构建脚本
在/ruoyi-cloud/nginx目录下新建Dockerfile镜像构建脚本,脚本内容如下:
bash
[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 front-end:latest .】命令拉取nginx基础镜像,并利用该nginx基础镜像构建一个名为ruoyi-nginx:latest的镜像,如下所示。
bash
[root@node01 nginx]# docker build -t ruoyi-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 front-end:latest
**注:**若某个下载环节卡住长时间不动,可按Ctrl+C取消,重新执行构建即可。
3.3.5 查看前端镜像
执行【docker images】命令查看当前镜像,如下所示。
bash
[root@node01 nginx]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ruoyi-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镜像构建脚本,脚本内容如下:
bash
[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-gateway:latest .】命令拉取openjdk:8-jre基础镜像,并利用该基础镜像构建一个名为ruoyi-gateway:latest的镜像,如下所示。
bash
[root@node01 gateway]# docker build -t ruoyi-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-gateway:latest
3.5.1.4 查看镜像
执行【docker images】命令查看当前镜像,如下所示。
bash
[root@node01 gateway]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ruoyi-gateway latest 367e221b3f9e About a minute ago 362MB
ruoyi-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镜像构建脚本,脚本内容如下:
bash
[root@node01 nacos]# vim Dockerfile
# 基础镜像
FROM nacos/nacos-server
# author
MAINTAINER ptuxgk
# 复制conf文件到路径
COPY ./conf/application.properties /usr/local/nacos/conf/application.properties
3.5.2.3 构建nacos镜像
在/ruoyi-cloud/nacos/目录执行【docker build -t ruoyi-nacos:latest .】命令拉取nacos/nacos-server基础镜像,并利用该基础镜像构建一个名为ruoyi-nacos:latest的镜像,如下所示。
bash
[root@node01 nacos]# docker build -t ruoyi-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-nacos:latest
3.5.2.4 查看镜像
执行【docker images】命令查看当前镜像,如下所示。
bash
[root@node01 nacos]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ruoyi-nacos latest 9440a168a8aa 53 seconds ago 1.05GB
ruoyi-gateway latest 367e221b3f9e 14 minutes ago 362MB
ruoyi-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镜像构建脚本,脚本内容如下:
bash
[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-auth:latest .】命令拉取openjdk:8-jre基础镜像,并利用该基础镜像构建一个名为ruoyi-auth:latest的镜像,如下所示。
bash
[root@node01 auth]# docker build -t ruoyi-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-auth:latest
3.5.3.4 查看镜像
执行【docker images】命令查看当前镜像,如下所示。
bash
[root@node01 auth]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ruoyi-auth latest 7a78ed9189f5 2 minutes ago 354MB
ruoyi-nacos latest 9440a168a8aa 6 minutes ago 1.05GB
ruoyi-gateway latest 367e221b3f9e 19 minutes ago 362MB
ruoyi-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镜像构建脚本,脚本内容如下:
bash
[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-modules-system:latest .】命令拉取openjdk:8-jre基础镜像,并利用该基础镜像构建一个名为ruoyi-modules-system:latest的镜像,如下所示。
bash
[root@node01 system]# docker build -t ruoyi-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-modules-system:latest
3.5.4.4 查看镜像
执行【docker images】命令查看当前镜像,如下所示。
bash
[root@node01 system]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ruoyi-modules-system latest ac593d77af23 21 seconds ago 370MB
ruoyi-auth latest 7a78ed9189f5 12 minutes ago 354MB
ruoyi-nacos latest 9440a168a8aa 16 minutes ago 1.05GB
ruoyi-gateway latest 367e221b3f9e 29 minutes ago 362MB
ruoyi-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镜像构建脚本,脚本内容如下:
bash
[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-modules-gen:latest .】命令拉取openjdk:8-jre基础镜像,并利用该基础镜像构建一个名为ruoyi-modules-gen:latest的镜像,如下所示。
bash
[root@node01 gen]# docker build -t ruoyi-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-modules-gen:latest
3.5.5.4 查看镜像
执行【docker images】命令查看当前镜像,如下所示。
bash
[root@node01 gen]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ruoyi-modules-gen latest 3916a45a66cb 23 seconds ago 365MB
ruoyi-modules-system latest ac593d77af23 3 minutes ago 370MB
ruoyi-auth latest 7a78ed9189f5 15 minutes ago 354MB
ruoyi-nacos latest 9440a168a8aa 19 minutes ago 1.05GB
ruoyi-gateway latest 367e221b3f9e 32 minutes ago 362MB
ruoyi-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镜像构建脚本,脚本内容如下:
bash
[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-modules-job:latest .】命令拉取openjdk:8-jre基础镜像,并利用该基础镜像构建一个名为ruoyi-modules-job:latest的镜像,如下所示。
bash
[root@node01 job]# docker build -t ruoyi-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-modules-job:latest
3.5.6.4 查看镜像
执行【docker images】命令查看当前镜像,如下所示。
bash
[root@node01 job]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ruoyi-modules-job latest 01513e80cd57 21 seconds ago 366MB
ruoyi-modules-gen latest 3916a45a66cb 4 minutes ago 365MB
ruoyi-modules-system latest ac593d77af23 7 minutes ago 370MB
ruoyi-auth latest 7a78ed9189f5 20 minutes ago 354MB
ruoyi-nacos latest 9440a168a8aa 23 minutes ago 1.05GB
ruoyi-gateway latest 367e221b3f9e 37 minutes ago 362MB
ruoyi-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镜像构建脚本,脚本内容如下:
bash
# 基础镜像
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-modules-file:latest .】命令拉取openjdk:8-jre基础镜像,并利用该基础镜像构建一个名为ruoyi-modules-file:latest的镜像,如下所示。
bash
[root@node01 file]# docker build -t ruoyi-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-modules-file:latest
3.5.7.4 查看镜像
执行【docker images】命令查看当前镜像,如下所示。
bash
[root@node01 file]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ruoyi-modules-file latest a4fede44a76e 20 seconds ago 362MB
ruoyi-modules-job latest 01513e80cd57 7 minutes ago 366MB
ruoyi-modules-gen latest 3916a45a66cb 11 minutes ago 365MB
ruoyi-modules-system latest ac593d77af23 15 minutes ago 370MB
ruoyi-auth latest 7a78ed9189f5 27 minutes ago 354MB
ruoyi-nacos latest 9440a168a8aa 30 minutes ago 1.05GB
ruoyi-gateway latest 367e221b3f9e 44 minutes ago 362MB
ruoyi-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镜像构建脚本,脚本内容如下:
bash
[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-mysql:latest .】命令拉取mysql:5.7基础镜像,并利用该基础镜像构建一个名为ruoyi-mysql:latest的镜像,如下所示。
bash
[root@node01 mysql]# docker build -t ruoyi-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-mysql:latest
3.5.8.4 查看镜像
执行【docker images】命令查看当前镜像,如下所示。
bash
[root@node01 mysql]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ruoyi-mysql latest da0cceb9be97 About a minute ago 448MB
ruoyi-modules-file latest a4fede44a76e 22 minutes ago 362MB
ruoyi-modules-job latest 01513e80cd57 30 minutes ago 366MB
ruoyi-modules-gen latest 3916a45a66cb 34 minutes ago 365MB
ruoyi-modules-system latest ac593d77af23 37 minutes ago 370MB
ruoyi-auth latest 7a78ed9189f5 About an hour ago 354MB
ruoyi-nacos latest 9440a168a8aa About an hour ago 1.05GB
ruoyi-gateway latest 367e221b3f9e About an hour ago 362MB
ruoyi-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镜像构建脚本,脚本内容如下:
bash
[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-redis:latest .】命令拉取redis基础镜像,并利用该基础镜像构建一个名为ruoyi-redis:latest的镜像,如下所示。
bash
[root@node01 redis]# docker build -t ruoyi-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-redis:latest
3.5.2.4 查看镜像
执行【docker images】命令查看当前镜像,如下所示。
bash
[root@node01 redis]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ruoyi-redis latest 99dee3e00862 55 seconds ago 113MB
ruoyi-mysql latest da0cceb9be97 2 minutes ago 448MB
ruoyi-modules-file latest a4fede44a76e 23 minutes ago 362MB
ruoyi-modules-job latest 01513e80cd57 31 minutes ago 366MB
ruoyi-modules-gen latest 3916a45a66cb 35 minutes ago 365MB
ruoyi-modules-system latest ac593d77af23 38 minutes ago 370MB
ruoyi-auth latest 7a78ed9189f5 About an hour ago 354MB
ruoyi-nacos latest 9440a168a8aa About an hour ago 1.05GB
ruoyi-gateway latest 367e221b3f9e About an hour ago 362MB
ruoyi-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镜像构建脚本,脚本内容如下:
bash
[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-visual-monitor:latest .】命令拉取openjdk:8-jre基础镜像,并利用该基础镜像构建一个名为ruoyi-visual-monitor:latest的镜像,如下所示。
bash
[root@node01 monitor]# docker build -t ruoyi-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-visual-monitor:latest
3.5.10.4 查看镜像
执行【docker images】命令查看当前镜像,如下所示。
bash
[root@node01 monitor]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ruoyi-visual-monitor latest f12cca59d7f2 20 seconds ago 329MB
ruoyi-redis latest 99dee3e00862 2 minutes ago 113MB
ruoyi-mysql latest da0cceb9be97 4 minutes ago 448MB
ruoyi-modules-file latest a4fede44a76e 25 minutes ago 362MB
ruoyi-modules-job latest 01513e80cd57 32 minutes ago 366MB
ruoyi-modules-gen latest 3916a45a66cb 37 minutes ago 365MB
ruoyi-modules-system latest ac593d77af23 40 minutes ago 370MB
ruoyi-auth latest 7a78ed9189f5 About an hour ago 354MB
ruoyi-nacos latest 9440a168a8aa About an hour ago 1.05GB
ruoyi-gateway latest 367e221b3f9e About an hour ago 362MB
ruoyi-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