yapi接口管理工具

使用 Docker 部署 YAPI

1、运行 MongoDB

# 创建存储卷
docker volume create mongo-data

# 启动 MongoDB
docker run -d \
  --name mongo-yapi \
  -v mongo-data:/data/db \
  -e MONGO_INITDB_ROOT_USERNAME=anoyi \
  -e MONGO_INITDB_ROOT_PASSWORD=anoyi.com \
  mongo

2、获取 YAPI 镜像,其他版本:阿里云镜像仓库

docker pull registry.cn-hangzhou.aliyuncs.com/anoyi/yapi

3、自定义配置文件

config.json

{
  "port": "3000",
  "adminAccount": "admin@anoyi.com",
  "timeout":120000,
  "db": {
    "servername": "mongo",
    "DATABASE": "yapi",
    "port": 27017,
    "user": "anoyi",
    "pass": "anoyi.com",
    "authSource": "admin"
  }
}

4、初始化 YAPI 数据库索引及管理员账号

docker run -it --rm \
  --link mongo-yapi:mongo \
  --entrypoint npm \
  --workdir /yapi/vendors \
  -v $PWD/config.json:/yapi/config.json \
  registry.cn-hangzhou.aliyuncs.com/anoyi/yapi \
  run install-server

5、启动 Yapi 服务

docker run -d \
  --name yapi \
  --link mongo-yapi:mongo \
  --workdir /yapi/vendors \
  -p 3000:3000 \
  -v $PWD/config.json:/yapi/config.json \
  registry.cn-hangzhou.aliyuncs.com/anoyi/yapi \
  server/app.js

使用 YAPI


访问: http://localhost:3000
登录账号:admin@anoyi.com
密码:ymfe.org

手动构建 YAPI 镜像

1、编辑 Dockerfile

FROM node:12-alpine as builder
WORKDIR /yapi
RUN apk add --no-cache wget python make
ENV VERSION=1.9.2
RUN wget https://github.com/YMFE/yapi/archive/v${VERSION}.zip
RUN unzip v${VERSION}.zip && mv yapi-${VERSION} vendors
RUN cd /yapi/vendors && cp config_example.json ../config.json && npm install --production --registry https://registry.npm.taobao.org

FROM node:12-alpine
MAINTAINER 545544032@qq.com
ENV TZ="Asia/Shanghai"
WORKDIR /yapi/vendors
COPY --from=builder /yapi/vendors /yapi/vendors
EXPOSE 3000
ENTRYPOINT ["node"]

注意将 Dockerfile 中的 VERSION 值修改为你需要构建的 YAPI 版本。

2、构建镜像

docker build -t yapi .

YAPI 升级

# 1、停止并删除旧版容器
docker rm -f yapi

# 2、获取最新镜像
docker pull registry.cn-hangzhou.aliyuncs.com/anoyi/yapi

# 3、启动新容器
docker run -d \
  --name yapi \
  --link mongo-yapi:mongo \
  --workdir /yapi \
  -p 3000:3000 \
  -v $PWD/config.json:/config.json \
  registry.cn-hangzhou.aliyuncs.com/anoyi/yapi \
  server/app.js

制作本地的yapi docker镜像, docker-compose一键维护和部署.

YApi: Releases · YMFE/yapi · GitHub

制作本地的yapi docker镜像, docker-compose一键维护和部署.

  1. 初始化db, 开启自定义配置
git clone https://github.com/Ryan-Miao/docker-yapi.git
cd docker-yapi
docker-compose up

打开 localhost:9090

  • 默认部署路径为/my-yapi(需要修改docker-compose.yml才可以更改)
  • 修改管理员邮箱 ryan.miao@demo.com (随意, 修改为自己的邮箱)
  • 修改数据库地址为 mongo 或者修改为自己的mongo实例 (docker-compose配置的mongo服务名称叫mongo)
  • 打开数据库认证
  • 输入数据库用户名: yapi(mongo配置的用户名, 见mongo-conf/init-mongo.js)
  • 输入密码: yapi123456(mongo配置的密码, 见mongo-conf/init-mongo.js)

docker-compose.yml文件内容

# Use root/example as user/password credentials
version: '3.1'

services:
  mongo:
    image: mongo:4
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: admin
      MONGO_INITDB_ROOT_PASSWORD: admin123456
      MONGO_INITDB_DATABASE: yapi
    volumes:
        - ./mongo-conf:/docker-entrypoint-initdb.d
        - ./mongo/etc:/etc/mongo
        - ./mongo/data/db:/data/db
    ports:
        - 27017:27017
    healthcheck:
      test: ["CMD", "netstat -anp | grep 27017"]
      interval: 2m
      timeout: 10s
      retries: 3
  yapi:
    build:
      context: ./
      dockerfile: Dockerfile
    image: yapi
    # 第一次启动使用
    command: "yapi server"
    # 之后使用下面的命令
    # command: "node /my-yapi/vendors/server/app.js"
    volumes:
        - ./my-yapi:/my-yapi
    ports:
      - 9090:9090
      - 3000:3000
    depends_on:
      - mongo

init-mongo.js文件内容

db.createUser({ user: 'admin', pwd: 'admin123456', roles: [ { role: "root", db: "admin" } ] });

db.auth("admin", "admin123456");
 db.createUser({
 user: 'yapi',
 pwd: 'yapi123456',
 roles: [
 { role: "dbAdmin", db: "yapi" },
 { role: "readWrite", db: "yapi" }
 ]

 });

点击开始部署.

 

  1. 部署完毕后, 修改docker-compose.yml 启用
  yapi:
    build:
      context: ./
      dockerfile: Dockerfile
    image: yapi
    # 第一次启动使用,第一次启动要把这个注释开起来
    command: "yapi server"
    # 之后使用下面的命令,把上面的command语句行注释,把下面的注释开启
    #command: "node /my-yapi/vendors/server/app.js"

重启服务:

docker-compose up

访问 localhost:3000

  • 输入用户名ryan.miao@demo.com(自己输入的管理员邮箱)
  • 输入密码ymfe.org(默认的初始化密码, 之后可以修改)

然后可以导入一个swagger的接口数据试试:

前台启动确认没问题后, 直接转为 后台启动

docker-compose stop或者contrl+C
docker-compose up -d

数据备份

所有数据都在mongo中, 理论上建议使用自己搭建的mongo实例, 这里docker的mongo也可以使用, 只要备份本mongo数据即可.

可以使用mongodb的备份方式, 也可以直接备份mongo/data.

版本升级

可以看出, 只要重新找个机器部署一遍, 然后导入mongo数据即可.

一些配置

部署路径

容器采用的node:12-alpine 这个镜像, yapi部署目录默认为my-yapi. 这里已经映射到本地磁盘, 也可以自己挂载想要的数据盘.

在docker-compose中配置了, 本地目录映射到容器目录my-yapi

    volumes: 
        - ./my-yapi:/my-yapi

Mongo配置

本方案直接使用docker-compose的mongo. 定义了初始化脚本init-mongo.js. 修改即可修改账号和密码.

插件等配置

已经把yapi部署文件给映射到磁盘了, 该怎么安装就怎么安装.

注意yapi目前处于无人维护状态,源码有一些问题,直接下载安装插件可能失败,具体见 API可视化管理平台YApi - Ryan.Miao - 博客园

.
├── doc
│   ├── init-2.jpg
│   └── init.jpg
├── docker-compose.yml
├── Dockerfile
├── mongo
│   ├── data
│   │   └── db
│   └── etc
├── mongo-conf
│   └── init-mongo.js
├── my-yapi
│   ├── config.json
│   ├── init.lock
│   ├── log
│   │   └── 2020-6.log
│   └── vendors
│       ├── aa.js
│       ├── CHANGELOG.md
│       ├── client
│       ├── common
│       ├── config_example.json
│       ├── exts
│       ├── LICENSE
│       ├── node_modules
│       ├── nodemon.json
│       ├── npm-publish.js
│       ├── package.json
│       ├── package-lock.json
│       ├── plugin.json
│       ├── README.md
│       ├── server
│       ├── static
│       ├── webpack.alias.js
│       ├── yapi-base-flow.jpg
│       └── ykit.config.js
├── readme.md
└── repositories

一键部署YApi

注意:本仓库目前只支持安装,暂不支持升级,请知晓。如需升级请备份mongoDB内的数据。

默认密码是:ymfe.org,安装成功后进入后台修改

可修改变量

环境变量默认值建议
VERSION1.10.2强烈建议升级
HOME/home可修改
PORT3000可修改
ADMIN_EMAILtest@test.com建议修改
DB_SERVERmongo(127.0.0.1)不建议修改
DB_NAMEyapi不建议修改
DB_PORT27017不建议修改
VENDORS${HOME}/vendors不建议修改

获取本镜像

docker pull mrjin/yapi:latest

docker-compose 部署

version: '2.1'
services:
  yapi:
    image: mrjin/yapi:latest
    # build: ./
    container_name: yapi
    environment:
      - VERSION=1.10.2
      - LOG_PATH=/tmp/yapi.log
      - HOME=/home
      - PORT=3000
      - ADMIN_EMAIL=test@test.com
      - DB_SERVER=mongo
      - DB_NAME=yapi
      - DB_PORT=27017
    # restart: always
    ports:
      - 127.0.0.1:3000:3000
    volumes:
      - ~/data/yapi/log/yapi.log:/home/vendors/log # log dir
    depends_on:
      - mongo
    entrypoint: "bash /wait-for-it.sh mongo:27017 -- entrypoint.sh"
    networks:
      - back-net
  mongo:
    image: mongo
    container_name: mongo
    # restart: always
    ports:
      - 127.0.0.1:27017:27017
    volumes:
      - ~/data/yapi/mongodb:/data/db #db dir
    networks:
      - back-net
networks:
  back-net:
    external: true

Nginx 配置

server {
    listen     80;
    server_name your.domain;
    keepalive_timeout   70;

    location / {
        proxy_pass http://yapi:3000;
    }
    location ~ /\. {
        deny all;
    }
}

启动方法

  1. 修改docker-compose.yml文件里面相关参数

  2. 创建network:docker network create back-net

  3. 启动服务:docker-compose up -d

docker-YApi

要求

你得确保在你的设备上安装了不是太老版本的 Docker 和 Docker Compose

安装

首先,克隆本项目:

git clone https://github.com/fjc0k/docker-YApi.git

# 无法访问 github 的可使用国内镜像:
git clone https://gitee.com/fjc0k/docker-YApi.git

接下来,修改 docker-compose.yml 中 yapi-web 下的环境变量 YAPI_ADMIN_ACCOUNT 为你的管理员邮箱,YAPI_ADMIN_PASSWORD 为你的管理员密码。

最后,执行 docker-compose up -d 启动服务。

然后,通过 http://localhost:40001 即可访问 YApi

如何配置

为了减少二次配置,docker-YApi 新增了 adminPassword 选项以设置管理员密码。

通过 config.json 或者 config.js 配置(不推荐)

config.json 是 YApi 官方支持的配置文件,config.js 是 docker-YApi 扩展支持的配置文件,其实就是将 JSON 数据写成了更简洁的 JavaScript 对象。

你可通过将外部的 config.json 或 config.js 配置文件映射进容器内部来使用它们:

./config.json:/yapi/config.json
./config.js:/yapi/config.js

通过环境变量配置(推荐)

通过环境变量配置的选项会覆盖通过 config.json 或者 config.js 配置的选项。

基础配置

环境变量名称类型说明示例
YAPI_ADMIN_ACCOUNTstring管理员账号(邮箱)admin@foo.bar
YAPI_ADMIN_PASSWORDstring管理员密码adm1n
YAPI_CLOSE_REGISTERboolean是否关闭注册,由于 docker-YApi 已内置相关插件,你可在关闭注册后在后台手动添加用户true
YAPI_NPM_REGISTRYstringnpm 源,目前仅在安装插件时使用,默认官方源,国内可以设为淘宝源加速https://registry.npm.taobao.org

数据库配置

环境变量名称类型说明示例
YAPI_DB_SERVERNAMEstringMongoDB 服务地址yapi-mongo
YAPI_DB_PORTnumberMongoDB 服务端口27017
YAPI_DB_DATABASEstring使用的 MongoDB 数据库yapi
YAPI_DB_USERstring登录 MongoDB 服务的用户名root
YAPI_DB_PASSstring登录 MongoDB 服务的用户密码r00t
YAPI_DB_AUTH_SOURCEstringMongoDB 身份认证所用库admin
YAPI_DB_CONNECT_STRINGstring使用 MongoDB 集群时配置mongodb://127.0.0.100:8418,127.0.0.101:8418/yapidb?slaveOk=true
YAPI_DB_OPTIONSjsonMongoose 连接 MongoDB 服务时的额外选项,一般不用设置。请参考: Mongoose.prototype.connect(){}

邮件配置

环境变量名称类型说明示例
YAPI_MAIL_ENABLEboolean是否启用true
YAPI_MAIL_HOSTstring邮件服务地址smtp.163.com
YAPI_MAIL_PORTnumber邮件服务端口465
YAPI_MAIL_FROMstring发送人邮箱foo@163.com
YAPI_MAIL_AUTH_USERstring登录邮件服务的用户名bar@163.com
YAPI_MAIL_AUTH_PASSstring登录邮件服务的用户密码f00bar
YAPI_MAIL_OPTIONSjson传递给 Nodemailer 的额外选项,一般不用设置。请参考:Nodemailer > SMTP transport{"tls":{"rejectUnauthorized":false}}

LDAP 登录配置

点击查看 YApi 仓库下 LDAP 相关的 issues 👉

环境变量名称类型说明示例
YAPI_LDAP_LOGIN_ENABLEboolean是否启用true
YAPI_LDAP_LOGIN_SERVERstringLDAP 服务地址ldap://ldap.foo.bar
YAPI_LDAP_LOGIN_BASE_DNstring登录 LDAP 服务的用户名cn=admin,dc=foo,dc=bar
YAPI_LDAP_LOGIN_BIND_PASSWORDstring登录 LDAP 服务的用户密码f00bar
YAPI_LDAP_LOGIN_SEARCH_DNstring查询用户数据的路径ou=users,dc=foo,dc=bar
YAPI_LDAP_LOGIN_SEARCH_STANDARDstring支持两种值:
1、前端登录账号对应的查询字段,如:mailuid 等;
2、自定义查询条件,其中 %s 会被前端登录账号替换,如:&(objectClass=user)(cn=%s)
-
YAPI_LDAP_LOGIN_EMAIL_POSTFIXstring登录邮箱后缀@163.com
YAPI_LDAP_LOGIN_EMAIL_KEYstringLDAP 数据库存储用户邮箱的字段mail
YAPI_LDAP_LOGIN_USERNAME_KEYstringLDAP 数据库存储用户名的字段name

插件配置

环境变量名称类型说明示例
YAPI_PLUGINSjson要使用的插件列表。点击查看开源 YApi 插件列表 →

配置项数据格式:
{
"name": "插件名称,必须去除前缀 yapi-plugin-",
"options": "插件配置,没有配置则不必设置"
}

注意:
安装插件会运行 YApi 自带的打包命令,其内存消耗较大,因此,在安装插件时,物理机可用内存最好大于等于 4GB,否则,易出现内存溢出错误,导致插件安装失败。
[{"name":"gitlab","options":{}}]

内置插件

为 YApi 安装插件是一件异常缓慢且易因服务器配置不够而出错的事情,因此 docker-YApi 内置了以下插件,希望能减少点不必要的麻烦:

如果你有其他希望内置的插件,欢迎提交 issue

如何重启

若你修改了配置,务必重启应用才能生效:

docker-compose restart yapi-web

如何升级

 

若 YApi 有更新,本项目应会尽快跟进,之后,你可使用以下命令升级:

docker-compose pull yapi-web \
  && docker-compose down \
  && docker-compose up -d

升级不会对原有数据造成任何影响!

查看日志

如果出现意外情况,你可通过以下命令查看运行日志:

docker-compose logs yapi-web

如何迁移

直接打包整个目录去新的服务器即可。

play 版说明

本项目额外提供了一个开箱即用的 play 版本(内置了数据库),你可通过它对 YApi 作一个大概的了解:

# 纯粹的
docker run --rm -p 40001:3000 jayfong/yapi:play

# 带插件的
docker run --rm -p 40001:3000 -e YAPI_PLUGINS='[{"name":"interface-oauth2-token"}]' jayfong/yapi:play

你可在本地或 Play with Docker 上运行上面的命令,然后打开 http://localhost:40001 体验 YApi。

默认的管理员账号:admin@docker.yapi,管理员密码:adm1n

YApi 相关资源推荐

  • YApi-X

    YApi 二次开发版,进行了很多功能上的增强,原生支持 Docker 安装。

  • YApi-X 浏览器插件

    为 YApi-X 开发的浏览器跨域与文件上传插件,同时支持 YApi 官方版。

  • YApi to TypeScript

    根据 YApi 的接口定义生成 TypeScript 的接口类型及其请求函数代码,同时支持生成 React Hooks 代码。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值