官方给出的部署教程比较简短,只有两行命令:

npm install -g yapi-cli --registry https://registry.npm.taobao.org
yapi server 

如果是新的Linux机器,跟着操作应该没什么问题,但是我在测试机和wsl上实操发现了一堆依赖问题,又是要更新node又是要装mongodb,所以不建议用yapi-cli来部署,能用docker尽量用docker.

官方推荐的一个非官方docker部署方案: https://www.jianshu.com/p/a97d2efb23c5

我部署完后发现这里还是有些小坑,所以顺带补充一些说明.

运行 MongoDB

# 创建存储卷
docker volume create mongo-data

# 启动 MongoDB
docker run -d \
  --name mongo-yapi \
  -v mongo-data:/data/db \
  -e MONGO_INITDB_ROOT_USERNAME=anoyi \
  -e MONGO_INITDB_ROOT_PASSWORD=anoyi.com \
  mongo
  
# 进入mongodb
docker exec -it  mongo-yapi  /bin/bash
mongo
#校验管理员账号,成功会返回1
use admin
db.auth("anoyi","anoyi.com")

部署都尽可能用root账号,避免出现权限问题,如果命令中指定了目录,要确认对应的目录是否存在,否则也可能出问题.比如,这里要先创建好/data/db这个目录,否则校验mongodb账号的时候会失败.

anoyi和anoyi.com就是mongodb的管理员账密,自己看着改

获取YAPI镜像

docker pull registry.cn-hangzhou.aliyuncs.com/anoyi/yapi

自定义配置文件

vi /yapi/config.json

# 输入以下内容

{
  "port": "3000",
  "adminAccount": "admin@anoyi.com",
  "timeout":120000,
  "db": {
    "servername": "mongo",
    "DATABASE": "yapi",
    "port": 27017,
    "user": "anoyi",
    "pass": "anoyi.com",
    "authSource": "admin"
  }
}

adminAccount即yapi的管理员账号,密码预设的是ymfe.org

在官方的教程中有一段说只有超级管理员有权限创建分组,这里的超级管理员就是指的管理员,超级管理员可能是yapi历史的一个角色,但是现在没有了,文档没更新.官方的文档有很多落后的地方,比如其实任意新建的账号都能新建分组的.

user和pass是mongodb的管理员账密.

初始化 YAPI 数据库索引及管理员账号

在/yapi的路径下输入

docker run -it --rm \
  --link mongo-yapi:mongo \
  --entrypoint npm \
  --workdir /yapi/vendors \
  -v $PWD/config.json:/yapi/config.json \
  registry.cn-hangzhou.aliyuncs.com/anoyi/yapi \
  run install-server

启动 Yapi 服务

在/yapi的路径下输入

docker run -d \
  --name yapi \
  --link mongo-yapi:mongo \
  --workdir /yapi/vendors \
  -p 3000:3000 \
  -v $PWD/config.json:/yapi/config.json \
  registry.cn-hangzhou.aliyuncs.com/anoyi/yapi \
  server/app.js

使用YAPI

测接口的话要在chrome商店安装YApi-X插件