Skip to content
On this page

docker搭建开发接口工具--Yapi

Yapi旨在为开发、产品、测试人员提供更优雅的接口管理服务,可以帮助开发者轻松创建、发布、维护API。本文将讲述如何通过docker私有化部署Yapi服务端。

特点

  • 可视化的接口管理
  • 具备完整的权限管理体系
  • 支持直接mock数据,同时mock支持高级mock定制
  • 支持导入 swagger, postman, har 数据格式,方便迁移旧项目
  • 支持自动化测试
  • 支持LPAD登陆

为什么不选择ApiFox

可以说ApiFox的功能更加丰富全面,但是Ypai功能也已经够用。重点在于,ApiFox免费版必须联网使用,一些公司内网环境下无法连接,而私有化部署需要付费。Yapi项目开源可以私有化部署免费使用。所以如果你的开发环境不能连接公网并且公司想节约这方面的成本,Yapi是个不错的选择!

官方地址

Yapi官方私有化部署指南

docker部署

本文采用docker方式进行部署,镜像为作者根据官网指南构建docker镜像地址。 由于Yapi需要一个MongoDb服务支持,所以需要先起一个mongo容器,数据库不希望被其他应用访问,本文使用了docker自定义桥接网络。 以下开始使用docker-cli方式部署,读者也可以选择自己编写docker compose文件启动。

  1. 创建自定义桥接网络
sh
docker network create yapi
  1. 创建mongoDb容器
sh
docker run -d \
  --name yapi-db \
  --network yapi \
  -e MONGO_INITDB_DATABASE=yapi \
  -e MONGO_INITDB_ROOT_USERNAME=root \
  -e MONGO_INITDB_ROOT_PASSWORD=mongo管理密码 \
  mongo:3

注意:这里使用的是mongo:3的镜像,请不要升级mongo版本,作者踩过坑了!

  1. 进入mongoDb容器,创建yapi用户
sh
docker exec -it yapi-db bash

容器内:

sh
mongo
--------------------------------------------------
use admin
db.auth('root', 'mongo管理密码')
use yapi
db.createUser({
  user: 'yapi',
  pwd: 'yapi用户密码',
  roles: [
    { role: "dbAdmin", db: "yapi" },
    { role: "readWrite", db: "yapi" }
  ]
});
exit
exit

注意此处两个密码,root应该与环境变量中的MONGO_INITDB_ROOT_PASSWORD相同,而yapi用户的密码应该与后面用到的配置文件密码相同。 默认配置文件密码为sadfasfafdasf,如果不自定义配置文件请将yapi用户密码设置为相同的sadfasfafdasf,否则启动报错

  1. 创建yapi容器,初始化数据库
sh
docker run -d 
  --name yapi \
  --network yapi \
  -p 3000:3000 \
  laoyutang/yapi:latest \
  npm run install-server

此处执行了npm run install-server,让yapi初始化mongo。

  1. 初始化完成后,删除容器,重新创建即可。
sh
docker rm -f yapi

docker run -d \
  --name yapi \
  --network yapi \
  -p 3000:3000 \
  laoyutang/yapi:latest
  1. 此时访问Ip:3000已经可以访问项目了!跟着教程快速上手吧。

  2. 需要自定义配置文件的看这里

sh
-v 配置文件路径:/config.json

默认配置文件如下:

json
{
  "port": "3000",
  "adminAccount": "[email protected]",
  "timeout": 120000,
  "db": {
    "servername": "yapi-db",
    "DATABASE": "yapi",
    "port": 27017,
    "user": "yapi",
    "pass": "sadfasfafdasf",
    "authSource": ""
  }
}

具体的字段含义请参考官方文档,可以配置LPAD登陆、邮箱、禁止注册、通知等等功能。

上次更新于: