构建
源码地址:https://github.com/YMFE/yapi
使用:https://www.freesion.com/article/7738391556/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| #使用 Docker 构建 Yapi #1、启动 MongoDB docker run -d --name mongo-yapi mongo #2、获取 Yapi 镜像,版本信息可在 阿里云镜像仓库 查看 docker pull registry.cn-hangzhou.aliyuncs.com/anoy/yapi #3、初始化 Yapi 数据库索引及管理员账号 docker run -it --rm \ --link mongo-yapi:mongo \ --entrypoint npm \ --workdir /api/vendors \ registry.cn-hangzhou.aliyuncs.com/anoy/yapi \ run install-server #自定义配置文件挂载到目录 /api/config.json #官方自定义配置文件 https://github.com/YMFE/yapi/blob/master/config_example.json
#4、启动 Yapi 服务 docker run -d \ --name yapi \ --link mongo-yapi:mongo \ --workdir /api/vendors \ -p 8880:3000 \ registry.cn-hangzhou.aliyuncs.com/anoy/yapi \ server/app.js
#访问 http://localhost:8880 登录账号 admin@admin.com,密码 ymfe.org #关闭 Yapi docker stop yapi #启动 Yapi docker start yapi #升级 Yapi #1、停止并删除旧版容器 docker rm -f yapi #2、获取最新镜像 docker pull registry.cn-hangzhou.aliyuncs.com/anoy/yapi #3、启动新容器 docker run -d \ --name yapi \ --link mongo-yapi:mongo \ --workdir /api/vendors \ -p 8880:3000 \ registry.cn-hangzhou.aliyuncs.com/anoy/yapi \ server/app.js #手动构建 yapi 镜像 #1、下载 YAPI 到本地 wget -o yapi.tar.gz https://github.com/YMFE/yapi/archive/v1.8.0.tar.gz 下载地址:https://github.com/YMFE/yapi/releases #2、编辑 Dockerfile FROM node:12-alpine as builder RUN apk add --no-cache git python make openssl tar gcc COPY yapi.tar.gz /home RUN cd /home && tar zxvf yapi.tar.gz && mkdir /api && mv /home/yapi-1.8.0 /api/vendors RUN cd /api/vendors && \ npm install --production --registry https://registry.npm.taobao.org FROM node:12-alpine MAINTAINER 545544032@qq.com ENV TZ="Asia/Shanghai" HOME="/" WORKDIR ${HOME} COPY --from=builder /api/vendors /api/vendors COPY config.json /api/ EXPOSE 3000 ENTRYPOINT ["node"] #3、构建镜像 docker build -t yapi .
|
数据迁移
yapi的数据库是MongoDB,所以yapi的数据备份和恢复实际上就是MongoDB的数据备份与恢复,使用复制数据库文件夹,然后进行覆盖,是不可以将数据成功迁移的!
MongoDB的数据恢复一般是覆盖原有数据,如果想保留原有的数据,可以写脚本,以插入的形式添加。但若新数据与原有数据有重复,会添加错误,只能编写脚本判断
在yapi页面进行数据导出及导入
数据库数据迁移
这里主要使用两个命令:mongodump、mongorestore
数据导出
- -h:
MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
- -d:
需要备份的数据库实例,例如:yapi
- -o:
备份的数据存放位置,例如:/home/apps,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个yapi目录,这个目录里面存放该数据库实例的备份数据。
1 2 3 4 5 6 7 8 9 10
|
local 0.000GB yapi 0.010GB
导出:
|
数据导入
- –h:
MongoDB所在服务器地址,默认为: localhost:27017
- -d :
需要恢复的数据库实例,例如:yapi,当然这个名称也可以和备份时候的不一样,比如test
- –drop:
恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!
- backupdirectory:
mongorestore 最后的一个参数,设置备份数据所在位置,例如:/home/apps/yapi。
- –dir:
指定备份的目录
如果在其他主机部署了一个新的yapi,那么最好先把现有的记录删除。最好备份恢复时让mongodb以及yapi版本保持一致,不然容易出错。同时最好加上–drop选项,保证恢复的完整性。
1 2 3 4 5
| mongorestore -h dbhost -d dbname --dir backupdirectory mongorestore -d yapi --drop --dir /home/apps/yapi
docker cp /home/jenkins/yapi 3b16a957f479:/home/apps docker exec 3b16a957f479 mongorestore -d yapi --drop --dir /home/apps/yapi
|
项目合并统一文档
updateAllDoc.js
1 2 3 4 5 6 7 8 9 10 11 12
| db.interface.deleteMany({"project_id":20});
db.interface.find({"project_id":{$ne:20}},{_id:0}) .sort({title:1}) .forEach((it)=>{ var oldCat= db.interface_cat.findOne({"project_id":it.project_id ,"_id":it.catid }); var newCat= db.interface_cat.findOne({"project_id":20 ,"name":oldCat.name }); it.project_id= 20; it.catid = newCat._id; db.interface.insert(it); print(it.title + "done"); });
|
1 2 3 4 5 6 7 8
| #!/bin/bash
#获取mongoDB容器ID CONTAINER_ID=`docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}\t{{.Status}}" |grep mongo-yapi|awk '{print $1}'`
#执行脚本, 将各中心的接口文档合并成一个 docker cp /home/jenkins/updateAllDoc.js $CONTAINER_ID:/ docker exec -it $CONTAINER_ID /bin/bash -c 'mongo 127.0.0.1:27017/yapi updateAllDoc.js'
|
问题
文档导出长参数时结构变形
解决:
./vendors/exts/yapi-plugin-export-data/defaultTheme.css
1 2 3 4 5 6
| td, th{ border:1px solid #ddd; padding:3px 10px; while-space:nowrap }
|