├── .gitignore ├── Dockerfile ├── doc ├── init-2.jpg ├── init.jpg ├── start-1.jpg └── start-2.jpg ├── docker-compose.yml ├── mongo-conf └── init-mongo.js ├── readme.md └── repositories /.gitignore: -------------------------------------------------------------------------------- 1 | yapi.tgz 2 | mongo/data 3 | my-yapi 4 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:12-alpine 2 | COPY repositories /etc/apk/repositories 3 | 4 | RUN npm install -g yapi-cli --registry https://registry.npmmirror.com 5 | 6 | EXPOSE 3000 9090 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /doc/init-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ryan-Miao/docker-yapi/12627f4a9947bc9286b9c9e75e1041af55ab53f2/doc/init-2.jpg -------------------------------------------------------------------------------- /doc/init.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ryan-Miao/docker-yapi/12627f4a9947bc9286b9c9e75e1041af55ab53f2/doc/init.jpg -------------------------------------------------------------------------------- /doc/start-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ryan-Miao/docker-yapi/12627f4a9947bc9286b9c9e75e1041af55ab53f2/doc/start-1.jpg -------------------------------------------------------------------------------- /doc/start-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ryan-Miao/docker-yapi/12627f4a9947bc9286b9c9e75e1041af55ab53f2/doc/start-2.jpg -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | # Use root/example as user/password credentials 2 | version: '3.1' 3 | 4 | services: 5 | mongo: 6 | image: mongo:4 7 | restart: always 8 | environment: 9 | MONGO_INITDB_ROOT_USERNAME: root 10 | MONGO_INITDB_ROOT_PASSWORD: example 11 | MONGO_INITDB_DATABASE: yapi 12 | volumes: 13 | - ./mongo-conf:/docker-entrypoint-initdb.d 14 | - ./mongo/etc:/etc/mongo 15 | - ./mongo/data/db:/data/db 16 | ports: 17 | - 27017:27017 18 | healthcheck: 19 | test: ["CMD", "netstat -anp | grep 27017"] 20 | interval: 2m 21 | timeout: 10s 22 | retries: 3 23 | yapi: 24 | build: 25 | context: ./ 26 | dockerfile: Dockerfile 27 | image: yapi 28 | # 第一次启动使用 29 | # command: "yapi server" 30 | # 之后使用下面的命令 31 | command: "node /my-yapi/vendors/server/app.js" 32 | volumes: 33 | - ./my-yapi:/my-yapi 34 | ports: 35 | - 9090:9090 36 | - 3000:3000 37 | depends_on: 38 | - mongo -------------------------------------------------------------------------------- /mongo-conf/init-mongo.js: -------------------------------------------------------------------------------- 1 | 2 | db.createUser({ user: 'admin', pwd: 'admin123456', roles: [ { role: "root", db: "admin" } ] }); 3 | 4 | db.auth("admin", "admin123456"); 5 | db.createUser({ 6 | user: 'yapi', 7 | pwd: 'yapi123456', 8 | roles: [ 9 | { role: "dbAdmin", db: "yapi" }, 10 | { role: "readWrite", db: "yapi" } 11 | ] 12 | 13 | }); 14 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | YApi Docker镜像 2 | ============== 3 | 4 | 5 | YApi: https://github.com/YMFE/yapi/releases 6 | 7 | 制作本地的yapi docker镜像, docker-compose一键维护和部署. 8 | 9 | ## How 10 | 11 | 1. 初始化db, 开启自定义配置 12 | 13 | ``` 14 | git clone https://github.com/Ryan-Miao/docker-yapi.git 15 | cd docker-yapi 16 | docker-compose up 17 | ``` 18 | 19 | 打开 localhost:9090 20 | 21 | - 默认部署路径为`/my-yapi`(需要修改docker-compose.yml才可以更改) 22 | - 修改管理员邮箱 `ryan.miao@demo.com` (随意, 修改为自己的邮箱) 23 | - 修改数据库地址为 `mongo` 或者修改为自己的mongo实例 (docker-compose配置的mongo服务名称叫mongo) 24 | - 打开数据库认证 25 | - 输入数据库用户名: `yapi`(mongo配置的用户名, 见mongo-conf/init-mongo.js) 26 | - 输入密码: `yapi123456`(mongo配置的密码, 见mongo-conf/init-mongo.js) 27 | 28 | 点击开始部署. 29 | 30 | ![](doc/init.jpg) 31 | ![](doc/init-2.jpg) 32 | 33 | 2. 部署完毕后, 修改docker-compose.yml 34 | 启用 35 | 36 | ``` 37 | yapi: 38 | build: 39 | context: ./ 40 | dockerfile: Dockerfile 41 | image: yapi 42 | # 第一次启动使用 43 | # command: "yapi server" 44 | # 之后使用下面的命令 45 | command: "node /my-yapi/vendors/server/app.js" 46 | ``` 47 | 48 | 重启服务: 49 | 50 | ``` 51 | docker-compose up 52 | ``` 53 | 54 | 访问 localhost:3000 55 | 56 | - 输入用户名ryan.miao@demo.com(自己输入的管理员邮箱) 57 | - 输入密码ymfe.org(默认的初始化密码, 之后可以修改) 58 | 59 | 然后可以导入一个swagger的接口数据试试: 60 | 61 | ![](doc/start-1.jpg) 62 | ![](doc/start-2.jpg) 63 | 64 | 65 | 3. 后台启动 66 | 67 | 前台启动确认没问题后, 直接 68 | ``` 69 | docker-compose stop或者contrl+C 70 | docker-compose up -d 71 | ``` 72 | 73 | 74 | ## 数据备份 75 | 76 | 所有数据都在mongo中, 理论上建议使用自己搭建的mongo实例, 这里docker的mongo也可以使用, 只要备份本mongo数据即可. 77 | 78 | 可以使用mongodb的备份方式, 也可以直接备份mongo/data. 79 | 80 | 81 | ## 版本升级 82 | 83 | 可以看出, 只要重新找个机器部署一遍, 然后导入mongo数据即可. 84 | 85 | 86 | ## 一些配置 87 | 88 | **部署路径** 89 | 90 | 容器采用的`node:12-alpine` 这个镜像, yapi部署目录默认为`my-yapi`. 这里已经映射到本地磁盘, 也可以自己挂载想要的数据盘. 91 | 92 | 在docker-compose中配置了, 本地目录映射到容器目录`my-yapi` 93 | 94 | ``` 95 | volumes: 96 | - ./my-yapi:/my-yapi 97 | ``` 98 | 99 | 100 | **Mongo配置** 101 | 102 | 本方案直接使用docker-compose的mongo. 定义了初始化脚本init-mongo.js. 修改即可修改账号和密码. 103 | 104 | 105 | **插件等配置** 106 | 107 | 已经把yapi部署文件给映射到磁盘了, 该怎么安装就怎么安装. 108 | 109 | 注意yapi目前处于无人维护状态,源码有一些问题,直接下载安装插件可能失败,具体见 https://www.cnblogs.com/woshimrf/p/13797749.html#_caption_1 110 | 111 | ``` 112 | . 113 | ├── doc 114 | │   ├── init-2.jpg 115 | │   └── init.jpg 116 | ├── docker-compose.yml 117 | ├── Dockerfile 118 | ├── mongo 119 | │   ├── data 120 | │   │   └── db 121 | │   └── etc 122 | ├── mongo-conf 123 | │   └── init-mongo.js 124 | ├── my-yapi 125 | │   ├── config.json 126 | │   ├── init.lock 127 | │   ├── log 128 | │   │   └── 2020-6.log 129 | │   └── vendors 130 | │   ├── aa.js 131 | │   ├── CHANGELOG.md 132 | │   ├── client 133 | │   ├── common 134 | │   ├── config_example.json 135 | │   ├── exts 136 | │   ├── LICENSE 137 | │   ├── node_modules 138 | │   ├── nodemon.json 139 | │   ├── npm-publish.js 140 | │   ├── package.json 141 | │   ├── package-lock.json 142 | │   ├── plugin.json 143 | │   ├── README.md 144 | │   ├── server 145 | │   ├── static 146 | │   ├── webpack.alias.js 147 | │   ├── yapi-base-flow.jpg 148 | │   └── ykit.config.js 149 | ├── readme.md 150 | └── repositories 151 | ``` 152 | 153 | 154 | 155 | -------------------------------------------------------------------------------- /repositories: -------------------------------------------------------------------------------- 1 | https://mirrors.aliyun.com/alpine/v3.6/main/ 2 | 3 | https://mirrors.aliyun.com/alpine/v3.6/community/ 4 | 5 | --------------------------------------------------------------------------------