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

一、说明

本文配置环境为VMware虚拟机(2核CPU,4 GB内存,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.0EulerVersion:      18.09.0.323API version:       1.39Go version:        go1.17.3Git commit:        172f8daBuilt:             Wed Apr 19 02:01:22 2023OS/Arch:           linux/amd64Experimental:      falseServer:Engine:Version:          18.09.0EulerVersion:     18.09.0.323API version:      1.39 (minimum version 1.12)Go version:       go1.17.3Git commit:       172f8daBuilt:            Wed Apr 19 02:00:48 2023OS/Arch:          linux/amd64Experimental:     false

2.3 添加国内镜像源

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

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

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

2.4 重启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容器名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=passwordnacos.naming.empty-service.auto-clean=true
nacos.naming.empty-service.clean.initial-delay-ms=50000
nacos.naming.empty-service.clean.period-time-ms=30000management.endpoints.web.exposure.include=*management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=falseserver.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}iserver.tomcat.basedir=/home/ruoyi/nacos/tomcat/logsnacos.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=securitynacos.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:8080location /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-5646D:\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>          static4 个文件         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镜像构建脚本,脚本内容如下:

[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的镜像,如下所示。

[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】命令查看当前镜像,如下所示。

[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镜像构建脚本,脚本内容如下:

[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的镜像,如下所示。

[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】命令查看当前镜像,如下所示。

[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镜像构建脚本,脚本内容如下:

[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的镜像,如下所示。

[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】命令查看当前镜像,如下所示。

[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镜像构建脚本,脚本内容如下:

[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的镜像,如下所示。

[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】命令查看当前镜像,如下所示。

[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镜像构建脚本,脚本内容如下:

[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的镜像,如下所示。

[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】命令查看当前镜像,如下所示。

[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镜像构建脚本,脚本内容如下:

[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的镜像,如下所示。

[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】命令查看当前镜像,如下所示。

[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镜像构建脚本,脚本内容如下:

[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的镜像,如下所示。

[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】命令查看当前镜像,如下所示。

[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.1.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.1.3 构建modules-file镜像

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

[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.2.4 查看镜像

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

[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.1.1 上传jar

将编译构建的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-gateway:latest .】命令拉取openjdk:8-jre基础镜像,并利用该基础镜像构建一个名为ruoyi-gateway:latest的镜像,如下所示。

3.5.9 构建redis镜像

3.5.1.1 上传jar

将编译构建的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-gateway:latest .】命令拉取openjdk:8-jre基础镜像,并利用该基础镜像构建一个名为ruoyi-gateway:latest的镜像,如下所示。

 3.5.2.4 查看镜像

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

[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.10 构建visual-monitor镜像

3.5.1.1 上传jar

将编译构建的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-gateway:latest .】命令拉取openjdk:8-jre基础镜像,并利用该基础镜像构建一个名为ruoyi-gateway:latest的镜像,如下所示。

 3.5.2.4 查看镜像

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

[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.6 综合排编与部署

3.6.1 编写编排配置文件

3.6.2 一键部署

3.6.3 查看容器状态

3.6.4 配置防火墙

3.6.5 重启容器

3.7 配置nacos

3.8 测试访问

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

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

相关文章

中霖教育:税务师考试可以申请免试吗?

符合下列相应条件之一的&#xff0c;可报名参加税务师职业资格考试&#xff1a; 1.取得经济学、法学、管理学学科门类大学本科及以上学历(学位);或者取得其他学科门类大学本科学历&#xff0c;从事经济、法律相关工作满1年。 2.取得经济学、法学、管理学学科门类大学专科学历…

批量文本高效编辑神器:轻松拆分每行内容,一键保存更高效!轻松实现批量拆分与保存

文本处理成为我们日常工作中的一项重要任务。然而&#xff0c;面对大量的文本内容&#xff0c;传统的逐行编辑方式往往显得繁琐且效率低下。那么&#xff0c;有没有一种更高效、更便捷的解决方案呢&#xff1f;答案是肯定的——批量文本高效编辑神器&#xff0c;让您的文本处理…

css-页面布局-定位大解析-每文一言(世界上,没有人可以支持你一辈子)

&#x1f390;每文一言 世界上,没有人可以支持你一辈子 目录 &#x1f390;每文一言 &#x1f381;css定位 &#x1f9e7;静态定位 position: static &#x1f384;相对定位 position:relative &#x1f380;绝对定位 position:absolute &#x1f383;固定定位 position…

vue3专栏项目 -- 四、前后端结合(上)

一、前后端分离是什么 前面我们一直在和静态数据打交道&#xff0c;虽然流程可以跑个半通&#xff0c;但是静态数据还是给我们造成了诸多不便&#xff0c;现在我们是时候用上后端了。 现在的应用开发模式&#xff0c;自从SPA出现以后&#xff0c;前端和后端可以平行的进行对应…

软件测试之 单元测试

你好,我是Qiuner. 为记录自己编程学习过程和帮助别人少走弯路而写博客 这是我的 github gitee 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 &#x1f604; (^ ~ ^) 想看更多 那就点个关注吧 我会尽力带来有趣的内容 单元测试 在eclipse中 导包 放入提前准备的包 遇到这…

Python 中的 Lambda 函数:简单、快速、高效

大家好&#xff0c;今天再给大家介绍一个python的一个强大工具Lambda 函数&#xff0c;它允许你快速定义简单的匿名函数。这种函数是“匿名的”&#xff0c;因为它们不需要像常规函数那样被明确命名。 在本文中&#xff0c;我们将通过清晰的解释和实用的示例&#xff0c;深入了…

阮怀俊谈如何盘活和挖掘乡村文旅资源

近年来&#xff0c;浙江凭借高水平建设新时代美丽乡村&#xff0c;各项工作持续走在全国前列&#xff0c;最近&#xff0c;在国家发展改革委关于恢复和扩大消费措施的通知中也提到&#xff1a; “推广浙江‘千万工程’经验&#xff0c;建设宜居宜业和美乡村。实施文化产业赋能乡…

【RAG 论文】FiD:一种将 retrieved docs 合并输入给 LM 的方法

论文&#xff1a; Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering ⭐⭐⭐⭐ EACL 2021, Facebook AI Research 论文速读 在 RAG 中&#xff0c;如何将检索出的 passages 做聚合并输入到生成模型是一个问题&#xff0c;本文提出了一…

基于深度学习神经网络的AI图像PSD去雾系统源码

第一步&#xff1a;PSD介绍 以往的研究主要集中在具有合成模糊图像的训练模型上&#xff0c;当模型用于真实世界的模糊图像时&#xff0c;会导致性能下降。 为了解决上述问题&#xff0c;提高去雾的泛化性能&#xff0c;作者提出了一种Principled Synthetic-to-real Dehazing (…

人工智能轨道交通行业周刊-第79期(2024.4.22-5.12)

本期关键词&#xff1a;无人机巡检、车机联控、减速顶、Agent、GraphRAG、RAGFlow 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMetro轨道世界铁路那…

MFC窗口更新与重绘

窗口更新与重绘 窗口或控件更新其外观的情况通常包括以下几种&#xff1a; 窗口大小变化&#xff1a; 当用户调整窗口大小时&#xff0c;窗口的客户区大小会改变&#xff0c;需要重新绘制窗口内容以适应新的大小。 窗口重叠或暴露&#xff1a; 当窗口被其他窗口遮挡部分或完…

作为校招新人,他们如何在字节跳动做 AI 研究并中选 ICLR 的?

校招生和实习生在字节跳动&#xff0c;工作一年就中选 ICLR 2024 &#xff0c;这是怎样一种体验&#xff1f; 就在 5 月 7 日至 5 月 11 日&#xff0c;2024 年度国际表征学习大会 ICLR 2024 在奥地利维亚纳举办。该活动是深度学习领域最重要的学术活动之一&#xff0c;由深度学…

pycharm 里面安装 codeium 插件的时候,不能够弹出登录界面

pycharm 里面安装 codeium 插件的时候&#xff0c;不能够弹出登录界面 pycharm 里面安装 codeium 插件的时候&#xff0c;不能够弹出登录界面--解决如下A pycharm 里面安装 codeium 插件的时候&#xff0c;不能够弹出登录界面–解决如下 #踩坑/pycharm/codeium插件无法登录 安…

C脚本实现WIncc模拟量趋势窗口弹出

文章目录 前言一、步骤及解析二、运行画面演示三、总结 前言 本文给出了一种基于C脚本实现点击输入输出域对象&#xff0c;弹出对应模拟量趋势窗口的方法。 一、步骤及解析 在Wincc变量管理中&#xff0c;添加两个变量&#xff1b; 示例如下&#xff1a; 将以上两个变量添加到…

pikachu靶场(xss通关教程)

&#xff08;注&#xff1a;若复制注入代码攻击无效&#xff0c;请手动输入注入语句&#xff0c;在英文输入法下&#xff09; 反射型xss(get型) 1.打开网站 发现有个框&#xff0c;然后我们在框中输入一个“1”进行测试&#xff0c; 可以看到提交的数据在url处有显示&#xf…

阮怀俊参与五龙乡黄沙村村企联办“强村公司”

为走好海岛县高质量发展共同富裕特色之路&#xff0c;探索村级集体经济发展新路径、扶持新模式、运行新机制&#xff0c;嵊泗县五龙乡黄沙村股份经济合作社与杭州山舍乡建乡村产业发展有限责任公司联办成“强村公司”。 创始人阮怀俊表示&#xff0c;双方就融合乡域发展和文旅产…

【考研数学】汤家凤“免单“数学题被吐槽‘太难’,老汤回应「怎么还有脸笑」,网友:这些题有毒!

我看了汤家凤老师出的几道题&#xff0c;实际上对于考研的同学来说&#xff0c;确实是送分题 第一个是三角函数变换中的万能公式&#xff1b;第二个e^x的泰勒展开公式&#xff1b;第三个是第一类重要极限。只要复习过&#xff0c;那基本上都能正常做出来。 至于汤家凤老师说「…

纯CSS实现步骤条

纯CSS实现纵向Steps步骤条效果 效果图 实现思路 步骤条是一种用于引导用户按照特定流程完成任务的导航条&#xff0c;在各种分步表单交互场景中广泛应用。步骤条通常由编号、名称和引导线三个基本要素组成。本文中要实现的是一个简单的步骤条&#xff0c;包含上述三个基本要素…

AI预测福彩3D采取887定位策略+杀断组+杀和尾+杀和值012缩水测试5月12日预测第1弹

前段时间工作太忙&#xff0c;手头上各种事情较多&#xff0c;没有静下心来对我的AI模型预测结果进行进一步分析筛选&#xff0c;导致最近连续几期与实际开奖结果相差较大。当然&#xff0c;客观来说&#xff0c;搞6码定位的确难度比较大&#xff0c;昨天跟几个常年研究3D的彩友…

2024最新最全【网络安全】逆向工程教学

逆向工程 以设计方法学为指导&#xff0c;以现代设计理论、方法、技术为基础&#xff0c;运用各种专业人员的工程设计经验、知识和创新思维&#xff0c;对已有产品进行解剖、深化和再创造。 逆向工程不仅仅在计算机行业、各行各业都存在逆向工程。 计算机行业逆向工程 计算…