Yapi Docker 安装部署

99 阅读2分钟

项目搭建

首先使用docker-compose启动mongo,注意这里的mogon网络默认是mongo-default:


version: '3.8'

services:
  mongo:
    image: mongo:8.0.10
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: root
    ports:
      - "27017:27017"        # 映射MongoDB端口,方便局域网访问

  mongo-express:
    image: mongo-express:1.0.2
    restart: always
    ports:
      - "8981:8081"          # 映射mongo-express端口,局域网可访问
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: root
      ME_CONFIG_MONGODB_URL: mongodb://root:root@mongo:27017/
      ME_CONFIG_BASICAUTH: "false"
    depends_on:
      - mongo

初始化Yapi

1. 启动mongodb容器
2. 进入mongodb     docker exec -it mongo-mong-1 
3. 
   use admin
   db.auth("root", "root")  //这里的帐号密码是mongo的帐号密码
   use yapi   //创建数据库,目前在mongo-express里还看见,需要待yapi启动后新yapi仓库才可见
   //创建用户,这里常创建链接仓库yapi的帐号密码是配置到config.json中的
   db.createUser({
        user: 'yapi',
        pwd: 'yapi',
        roles: [
        { role: "dbAdmin", db: "yapi" },
        { role: "readWrite", db: "yapi" }
        ]
    });
4. config.json如下, 其中servername随便填,没有特定要求
{
   "port": "3000",
   "adminAccount": "yapiadmin@163.com",
   "timeout":120000,
   "db": {
     "servername": "mongo",
     "DATABASE": "yapi",
     "port": 27017,
     "user": "yapi",
     "pass": "yapi",
     "authSource": ""
   },
   "mail": {
     "enable": true,
     "host": "smtp.163.com",
     "port": 465,
     "from": "*",
     "auth": {
       "user": "yapiadmin@163.com",
       "pass": "yapi"
     }
   }
 }

# 根据config.json中的adminAccount项配置的帐号来创建新帐号,且默认密码为yapi.pro
docker run -d --rm \
  --net=mongo_default \
  -v /opt/mongo/yapi/config.json:/yapi/config.json \
  yapipro/yapi:1.9.5 \
  server/install.js

# 启动yapi项目,并且在mongo中真正的初始化yapi仓库
docker run -d \
   --name yapi \
   --restart always \
   --net=mongo_default \
   -p 3000:3000 \
   -v /opt/mongo/yapi/config.json:/yapi/config.json \
   yapipro/yapi:1.9.5 \
   server/app.js

# 查看yapi日志
docker logs -f yapi
#如果显示
log: -------------------------------------swaggerSyncUtils constructor-----------------------------------------------
log: 服务已启动,请打开下面链接访问:
http://127.0.0.1:3000/
log: mongodb load success...
(node:1) [DEP0066] DeprecationWarning: OutgoingMessage.prototype._headers is deprecated

#就说明启动成功了

#访问mongo-express,可以看见新的仓库yapi初始化好了,并且在新仓库
#yapi下的document user里有一个新的用户yapiadmin@163.com

# 注意如果脚本 docker run -d --rm ... 执行创建用户的没生效,也可以直接注册一个用户,然后使用新注册的用户来使用yapi,不影响使用,不用纠结.