docker搭建yapi接口文档系统、Idea中上传接口

启动mongo

docker run -d \
  --name mongodb-yapi \
  --restart always \
  -p 27017:27017 \
  -v /home/ouhou/yapi/data/mongo/:/data/db \
  -e MONGO_INITDB_DATABASE=yapi \
  -e MONGO_INITDB_ROOT_USERNAME=admin \
  -e MONGO_INITDB_ROOT_PASSWORD=admin \
  mongo

进入容器初始化数据库

docker exec -it mongodb-yapi /bin/bash
# 进入容器后输入
mongosh

image-20240605152319585

use admin;

# 验证用户名和密码
db.auth("admin", "admin");  

# 创建 yapi 数据库
use yapi;

# 创建给 yapi 使用的账号和密码,分配管理、读写权限
db.createUser({
  user: 'yapi',
  pwd: 'yapi',
  roles: [
 { role: "dbAdmin", db: "yapi" },
 { role: "readWrite", db: "yapi" }
  ]
});

# 退出 Mongo Cli
exit

# 退出容器
exit

初始化yapi

初始化config.json

下面的端口号就是容器内部的端口号,不是映射到物理主机的端口号

{
   "port": "9070",
   "adminAccount": "cyl336018@163.com",
   "timeout":120000,
   "db": {
     "servername": "mongo",
     "DATABASE": "yapi",
     "port": 27017,
     "user": "yapi",
     "pass": "yapi",
     "authSource": ""
   },
   "mail": {
     "enable": true,
     "host": "smtp.163.com",
     "port": 25,
     "from": "cyl336018@163.com",
     "auth": {
       "user": "cyl336018@163.com",
       "pass": "授权码"
     }
   }
 }
docker run -d --rm \
  --name yapi-init \
  --link mongodb-yapi:mongo \
  -v /home/ouhou/yapi/data/yapi/config.json:/yapi/config.json \
   yapipro/yapi \
  server/install.js

运行yapi

docker run -d \
   --name yapi \
   --link mongodb-yapi:mongo \
   --restart always \
   -p 9070:9070 \
   -v /home/ouhou/yapi/data/yapi/config.json:/yapi/config.json \
   yapipro/yapi \
   server/app.js

登录yapi

正常默认的管理员用户名账号是在config.json中的adminAccount,但我不知道为啥,和这个不一样,可以直接去看本地映射的config.json文件,里面的adminAccount字段是正确的

密码就是yapi.pro

image-20240605160001116

配置idea

image-20240605160250275

安装插件

image-20240605163902644 image-20240605164211758

上传controller接口

image-20240605164252463

选择完成后,填入token即可

补充:将用户更新为管理员

参考链接:http://www.glmapper.com/2022/05/25/api/api-yapi-change-user-role-by-mongo/

但是要记得先去认证用户,才能更改

# MongoDB 登录认证
db.auth("yapi", "yapi");  

# 查找指定用户名的账户信息
db.getCollection("user").find({"username":"cyl"})
# 也可以使用邮箱来查找
# db.getCollection("user").find({"email":"cyl@qq.com"})

# 使用以下的语句更新指定用户的 role 为 admin,指定用户即可变成管理员用户
db.getCollection("user").update({"username":"cyl"}, {$set: {"role":"admin"}})

# 如果需要取消管理员权限,把 role 设置成 member 即可
# exit退出即可