部署yapi

安装 MongoDB

  • 下载镜像
docker search mongo
docker pull mongo
  • 启动容器
docker run -itd \
--network bridge \
--name  mongo \
-p 27017:27017 \
-v /data:/root/yapi/mongo \
-e MONGO_INITDB_DATABASE=yapi \
-e MONGO_INITDB_ROOT_USERNAME=yapipro \
-e MONGO_INITDB_ROOT_PASSWORD=xxx \
 mongo --auth
  • 进入容器
docker exec -it mongo mongo admin

报错

OCI runtime exec failed: exec failed: unable to start container process: exec: "mongo": executable file not found in $PATH: unknown

原因

mongo5.0以上的版本使用mongo来执行mongodb命令已经不支持了,你需要改用mongosh来替代mongo

修改为

docker exec -it mongo mongosh admin

  • 创建账号密码
    admin 库
    db.createUser({ user:'mongo',pwd:'xxx',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});

非 admin 库

对于非 admin 库,不能拥有 clusterAdmin、readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase 这些角色

MongoDB 目前内置了 7 个角色。
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root;这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
内部角色:__system

这些角色对应的作用如下:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限

db.createUser({ user:'yapipro',pwd:'xxx',roles:[ { role:'dbAdmin', db: 'yapi'},"dbAdmin"]});

尝试连接数据库

db.auth('mongo', 'xxxx')

安装 yapi

  • 下载镜像
docker search yapi

docker pull yapipro/yapi
  • 添加配置文件
{
   "port": "3008",
   "adminAccount": "xxxx@gmail.com",
   "timeout":120000,
   "db": {
     "servername": "172.18.0.7",
     "DATABASE": "yapi",
     "port": 27017,
     "user": "xxx",
     "pass": "xxxxxxx",
     "authSource": "admin"
   },
   "mail": {
     "enable": true,
     "host": "smtp.qq.com",
     "port": 465,
     "from": "xxx@qq.com",
     "auth": {
       "user": "xxx@qq.com.com",
       "pass": "xxxx"
     }
   }
 }
  • 初始化数据库表
docker run -itd  \
  --name yapi-init \
 --network bridge \
  -v /root/yapi/yapi.config.json:/yapi/config.json \
   yapipro/yapi \
  server/install.js

初始化管理员账号在上面的 config.json 配置中 adminAccount 的数据,初始密码是 yapi.pro,可以登录后进入个人中心修改

执行成功后显示 初始化管理员账号成功,账号名:"xxx@gmail.com",密码:"ymfe.org"

  • 启动yapi
docker run -d \
   --name yapi \
   --restart always \
   --network bridge \
   -p 3008:3008 \
   -v /root/yapi/yapi.config.json:/yapi/config.json \
   yapipro/yapi \
   server/app.js
  • 验证是否启动成功
    curl localhost:3008

yapi的使用

安装 easy-api 的idea插件
设置 -> Plugins

设置 yapi 服务路径

进入yapi项目

找到项目的 token

首次上传文档
直接选中项目,上传信息

此处填入yapi项目中的token数据 此token可以调用很多接口,不能暴露出去

后续更新文档
选中项目的controller文件,更新/上传文档

yapi使用

可以配置环境,参数,以及保存自测接口,保存数据在 测试集合 中

安装和使用插件
需要安装 cross-request 插件

本地调试
点击插件的 背景页 开启调试模式(和浏览器的开发控制台一样)

easy-api使用文档
文档:https://easyyapi.com/documents/index.html
validation分组支持: https://easyyapi.com/framwork/javax_validation.html

作者:admin  创建时间:2023-07-21 10:26
最后编辑:admin  更新时间:2024-05-14 10:08