跳到主要内容

Disk本地配置模式

Disk本地磁盘的配置中心模式是最简单的,用户只需要在本地磁盘建立一个数据目录即可。

启动配置

先来看Disk模式的docker-compose.yml信息:

docker-compose.yml
# 通过docker-compose可以快速部署knife4j服务
version: "2.0"
services:
knife4j:
container_name: knife4j-desktop
restart: always
image: "xiaoymin/knife4j:v2.0"
network_mode: "bridge"
# 本地磁盘目录映射
volumes:
- D:\Temp\data:/knife4j/data
ports:
- "10000:10000"
# 指定配置属性模式为disk本地磁盘
environment:
- knife4j.source=disk
- knife4j.disk.dir=/knife4j/data

属性说明:

属性说明
volumesdocker磁盘挂载映射目录,规则:宿主机本地目录(自定义):/knife4j/data
knife4j.source代表当前容器以什么模式启动,disk模式则代表是当前本地磁盘模式
knife4j.disk.dir代表disk模式下的配置信息读取目录,该目录可以存放OpenAPI离线文件(json/yml),也可以存放支持的服务中心以从远端拉取数据进行聚合

文档配置

那么,当我们通过docker-compose将容器启动后,如何增加文档呢?

增加文档

针对disk配置中心模式,在上面我们指定的volumes目录下

用户可以建N个一级文件夹(文档),文件夹名称必须是英文或英文+数字,示例如下:

|-data
|------ROOT
|------project1
|------project2
|------project3
|-----—project4
|-----—more...

ROOT目录代表的是根目录,最终访问文档的地址是:http://ip:port/doc.html

而开发者自建的文件夹目录,例如project1、project2、project3等等,所代表的是一个项目名称,最终访问的地址如下:

项目code文档地址
ROOT根目录,访问地址:http://ip:port/doc.html
project1http://ip:port/project1/doc.html
project2http://ip:port/project2/doc.html
project3http://ip:port/project3/doc.html
project4http://ip:port/project4/doc.html
以此类推http://ip:port/${code}/doc.html

配置文档

在上面的介绍种,我们知道了如何增加多个文档,其实很简单,只需要在data目录建文件夹即可,那么建立好了文件夹后,如何配置呢?

这里需要涉及到Knife4jAggregation提供支持的4种模式了:Disk、Cloud、Eureka、Nacos

一个项目文件夹只支持一种模式

拿ROOT根目录来做示例说明,开发者如何配置。

Disk模式

此disk模式代表的是服务中心的disk,虽然有点绕,但希望别混淆。

Disk模式在Knife4jAggregationDesktop中是最简单的,如果开发者拥有OpenAPI文档的静态JSON文件或者yml文件,那么就可以直接放在建好的文件夹中,不用任何配置,即可渲染。

目录结构如下:

|-data
|------ROOT
|--------userOpenApi.json
|--------orderOpenApi.json
|--------goodsOpenApi.yml

在ROOT目录下,我们放置了三个OpenAPI文档的静态文件:userOpenAPI以及orderOpenApigoodsOpenApi.yml,此时访问地址:http://ip:port/doc.html

开发者就能在文档界面中看到会存在三个分组下的OpenAPI文档了。

那么随之问题也来了,在文档中,下拉框的选项名称是以文件的名称来命名显示的,如果要自定义显示应该怎么办?,此时就需要继续在ROOT目录添加一个名为disk.properties的配置文件来进行重命名配置

knife4j.disk[0].routes[0].name=用户服务
# 此处location需要注意,只需要配置同级的文件名称即可
knife4j.disk[0].routes[0].location=userOpenApi.json

knife4j.disk[0].routes[1].name=订单服务
# 此处location需要注意,只需要配置同级的文件名称即可
knife4j.disk[0].routes[1].location=orderOpenApi.json

knife4j.disk[0].routes[2].name=商品服务
# 此处location需要注意,只需要配置同级的文件名称即可
knife4j.disk[0].routes[2].location=goodsOpenApi.yml

配置好后,无需重启,应用会自动加载

配置属性说明:

属性类型说明
knife4jobject顶级目录
knife4j.disk[0]arraydisk模式文档,因为disk模式以文件夹名称进行了切割,所有这里所有的配置都配置下标为0
knife4j.disk[0].routesarraydisk模式聚合的文档数量,多个则下标增加即可
knife4j.disk[0].routes[0].namestring当前文档分组显示名称
knife4j.disk[0].routes[0].locationstring当前文档在本目录下的文件名称,目前只支持以.json.yml结尾的OpenAPI规范文件
knife4j.disk[0].routes[0].debugUrlstring当前文档在调试时的HTTP地址,例如:http://192.168.1.1:9090
knife4j.disk[0].routes[0].orderint当前分组显示顺序值,排序规则为asc

Cloud模式

Cloud模式则是需要在创建好的文件夹目录下新建cloud.properties配置文件,然后配置Cloud模式的节点属性

目录结构如下:

|-data
|------ROOT
|--------cloud.properties

示例配置:

knife4j.cloud[0].routes[0].name=用户
knife4j.cloud[0].routes[0].uri=http://192.168.0.152:8999
knife4j.cloud[0].routes[0].location=/v2/api-docs?group=2.X版本
# more...具体参考Knife4jAggregation聚合组件配置Cloud模式

配置好后,无需重启,应用会自动加载

配置属性说明:

属性类型说明
knife4jobject顶级目录
knife4j.cloud[0]arraycloud模式文档,因为disk配置中心模式下以文件夹名称进行了切割,所有这里所有的配置都配置下标为0
knife4j.cloud[0].routesarraycloud模式聚合的文档数量,多个则下标增加即可
knife4j.cloud[0].routes[0].namestring当前文档分组显示名称
knife4j.cloud[0].routes[0].uristringcloud模式下获取OpenAPI信息的服务地址
knife4j.cloud[0].routes[0].locationstring当前文档的实际OpenAPI接口地址
knife4j.cloud[0].routes[0].debugUrlstring当前文档在调试时的HTTP地址(如果不配置,默认走uri的地址),例如:http://192.168.1.1:9090
knife4j.cloud[0].routes[0].orderint当前分组显示顺序值,排序规则为asc

Eureka模式

Eureka模式则是需要在创建好的文件夹目录下新建eureka.properties配置文件,然后配置eureka模式的节点属性

目录结构如下:

|-data
|------ROOT
|--------eureka.properties
knife4j.eureka[0].serviceUrl=http://localhost:10000/eureka/
knife4j.eureka[0].username=eureka鉴权账号
knife4j.eureka[0].password=eureka鉴权密码
knife4j.eureka[0].routes[0].name=用户
knife4j.eureka[0].routes[0].serviceName=userService
knife4j.eureka[0].routes[0].location=/v2/api-docs?group=2.X版本

配置好后,无需重启,应用会自动加载

配置属性说明:

属性类型说明
knife4jobject顶级目录
knife4j.eureka[0]arrayeureka模式文档,因为disk配置中心模式下以文件夹名称进行了切割,所有这里所有的配置都配置下标为0
knife4j.eureka[0].serviceUrlstringeureka服务注册中心地址
knife4j.eureka[0].usernamestringeureka服务注册中心用户名
knife4j.eureka[0].passwordstringeureka服务注册中心密码
knife4j.eureka[0].routesarrayeureka模式聚合的文档数量,多个则下标增加即可
knife4j.eureka[0].routes[0].namestring当前文档分组显示名称
knife4j.eureka[0].routes[0].serviceNamestringeureka服务注册中心中的真实服务名称
knife4j.eureka[0].routes[0].locationstring当前文档的实际OpenAPI接口地址
knife4j.eureka[0].routes[0].debugUrlstring当前文档在调试时的HTTP地址(如果不配置,默认走从eureka注册中心解析拿到的服务真实地址)
knife4j.eureka[0].routes[0].orderint当前分组显示顺序值,排序规则为asc

Nacos模式

推荐目标Nacos版本需2.0版本以上

Nacos模式则是需要在创建好的文件夹目录下新建nacos.properties配置文件,然后配置nacos模式的节点属性

目录结构如下:

|-data
|------ROOT
|--------nacos.properties

示例配置如下:

knife4j.nacos[0].server=127.0.0.1:8848
knife4j.nacos[0].username=nacos
knife4j.nacos[0].password=nacos
knife4j.nacos[0].namespace=dev
knife4j.nacos[0].routes[0].name=用户
knife4j.nacos[0].routes[0].serviceName=userService
knife4j.nacos[0].routes[0].groupName=DEFAULT_GROUP
knife4j.nacos[0].routes[0].location=/v2/api-docs?group=2.X版本

配置好后,无需重启,应用会自动加载

配置属性说明:

属性类型说明
knife4jobject顶级目录
knife4j.nacos[0]arraynacos模式文档,因为disk配置中心模式下以文件夹名称进行了切割,所有这里所有的配置都配置下标为0
knife4j.nacos[0].serverstringnacos服务注册中心地址,规则:ip:port,不需要protocol
knife4j.nacos[0].usernamestringnacos服务注册中心用户名
knife4j.nacos[0].passwordstringnacos服务注册中心密码
knife4j.nacos[0].passwordstringnacos服务注册中心密码
knife4j.nacos[0].namespacestringnacos服务注册namespaceId
knife4j.nacos[0].clustersstring集群,多个以逗号分割
knife4j.nacos[0].routesarraynacos模式聚合的文档数量,多个则下标增加即可
knife4j.nacos[0].routes[0].namestring当前文档分组显示名称
knife4j.nacos[0].routes[0].serviceNamestringnacos服务注册中心中的真实服务名称
knife4j.nacos[0].routes[0].groupNamestringnacos服务注册中心中的真实服务所处分组名称,例如:DEFAULT_GROUP
knife4j.nacos[0].routes[0].namespacestringnacos服务注册中心中的真实服务所处namespace
knife4j.nacos[0].routes[0].locationstring当前文档的实际OpenAPI接口地址
knife4j.nacos[0].routes[0].debugUrlstring当前文档在调试时的HTTP地址(如果不配置,默认走从nacos注册中心解析拿到的服务真实地址)
knife4j.nacos[0].routes[0].orderint当前分组显示顺序值,排序规则为asc