yapi 已经很久没人更新和维护,但界面和功能还是挺不错的,支持从Swagger快速导入更新接口,适合团队接口文档管理和存档。
官方并没有直接封装docker镜像,但是有一个二次开发的 YAPIPro镜像https://hub.docker.com/r/yapipro/yapi 提供了部署文档,但是步骤有点多。于是动手自定义了docker-compose.yml实现快速部署。

前提准备

机器已安装docker-compose

创建一个目录,接下来安装操作都在这个目录下操作。目录名称就叫 yapi

1
2
mkdir yapi
cd yapi

我们需要安装 yapimongodb 两个容器。并且需要提前创建mongodb的用户信息,并设置用户名和密码
所以需要准备一个脚本文件 init-mongo.js

1
2
3
4
5
6
7
db = db.getSiblingDB('yapi');

db.createUser({
user: "yapiblog",
pwd: "yapi666",
roles: [{ role: "dbAdmin", db: "yapi" },{ role: "readWrite", db: "yapi" }]
});

还需要准备yapi的配置文件 config.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"port": "3000",
"adminAccount": "hexiaohei1024@gmail.com",
"timeout":120000,
"db": {
"servername": "mongodb",
"DATABASE": "yapi",
"port": 27017,
"user": "yapiblog",
"pass": "yapi666",
"authSource": ""
},
"mail": {
"enable": true,
"host": "smtp.gmail.com",
"port": 465,
"from": "*",
"auth": {
"user": "hexiaohei1024@gmail.com",
"pass": "xxx"
}
}
}

准备之后的目录结构如下:

1
2
3
4
yapi
├── config.json
├── docker-compose.yml
├── init-mongo.js

部署脚本

因为yapi流程需要先初始化数,再二次启动运行。所以yml中需要增加一个一次性容器用于初始化数据库

docker-compose.yml 文件内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
version: '3'
services:
mongodb:
image: mongo:5.0.14
container_name: mongodb
restart: always
ports:
- "27017:27017"
environment:
MONGO_INITDB_DATABASE: yapi
# 设置ROOT用户和密码
MONGO_INITDB_ROOT_USERNAME: yapipro
MONGO_INITDB_ROOT_PASSWORD: yapipro1024
volumes:
- ./mongo-data:/data/db
- ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js
command: mongod --auth

# 这个容器只需要执行一次即可
yapi-init:
image: yapipro/yapi:1.9.5
container_name: yapi-init
restart: "no"
depends_on:
- mongodb
volumes:
- ./config.json:/yapi/config.json
# 设置延迟执行安装初始化
entrypoint: ["sh", "-c", "sleep 15 && node server/install.js"]

yapi:
image: yapipro/yapi:1.9.5
container_name: yapi
restart: always
depends_on:
- mongodb
ports:
- "3000:3000"
volumes:
- ./config.json:/yapi/config.json
entrypoint: ["sh", "-c", "sleep 30 && node server/app.js"]

启动验证

1
docker-compose up -d

初始化管理员账号在上面的 config.json 配置中 hexiaohei1024@gmail.com,初始密码是 yapi.pro,
可以登录后进入个人中心修改。 访问 IP:3000登录即可!

关于MongoDB版本选择:长时间运行且对稳定性要求高的生产环境:推荐使用 MongoDB 4.4.x 或 5.0.x,这些版本经过了大量验证,社区反馈也较好