本文讲解如何在linux中, 采用docker形式来安装yapi接口管理平台
简介
在安装之前,我们需要先知道,我们要做什么?
我们要安装一个接口管理平台,它的名字叫:YApi
然后呢,我们将采用docker的方式来进行安装
之所以会写这篇文字,是因为YApi 在安装过程中存在巨坑!
废话不多说,我们开始实战,我的系统是 Linux Centos7.9
如果你系统还没有安装docker和docker-compose,可以去看这篇文章 安装docker | 鹊桥科技 (vscodes.cn)
环境要求
- 操作系统:Linux
- docker
- docker-compose
这三样是必须要安装的
前期准备
创建yapi数据存放目录,这里我是存在/data/yapi目录下,你也可以放在其他地方
mkdir /data/yapi |
创建项目所在目录,这里我是存在/opt/yapi目录下,你页可以放在其他地方
mkdir /opt/yapi |
编写Dockerfile
yapi是基于nodejs的,所以我们这个dockerfile构建的容器,其实就是用来运行yapi的
在项目所在目录/opt/yapi中创建Dockerfile文件,内容如下:
FROM node:12 |
巨坑的地方就在这里,我们的nodejs版本不要高于12!!!否则很大几率会安装yapi失败,还会引申出各种各样的错误!!!
编写docker-compose.yml
由于yapi用到了mongodb,所以我们仍需要一个mongodb的容器,为了更好的编排,我们采用docker-compose来完成
在项目所在目录/opt/yapi中创建docker-compose.yml,内容如下:
version: '3' |
- version: 代表所采用的docker-compose语法版本,我们写3就可以了
- services:代表我们的服务,其实也就是我们的程序
- mongo:服务名,同时也是这个docker的hostname(主机名),可以自定义
- yapi:服务名,同时也是这个docker的hostname(主机名),可以自定义
- image: 镜像名:版本号,如果本地没有这个镜像,docker会自动pull下来
- container_name:容器的名称,也是可以自定义
- restart:
always
, 容器如果意外停止,则自动重启容器 - expose:向其他容器暴露端口,但不向宿主机暴露
- ports:同时向其他容器和宿主机暴露端口
- build:代表使用Dockerfile来构建
- context:代表Dockerfile所在的路径,
.
代表当前路径下
- context:代表Dockerfile所在的路径,
- volumes:
本地目录:容器目录
,将容器的指定目录挂载(同步)到本地的指定目录 - depends_on:代表先等待其他指定容器执行完毕,再运行本容器;
不一定靠谱
- networks:定义一个网络,网络名称叫
yapi-nat
,并手动指定哪个容器要加入这个网络,只有处在同一个网络的容器,才能互相访问彼此的服务,例如yapi服务要访问mongo服务,所以必须确保它俩处在同一个网络中
启动容器
执行以下命令,启动我们的yapi和mongo容器
docker-compose up -d |
执行命令的路径必须是在docker-compose.yml所在的位置
- up:代表启动
- -d:代表放置到系统后台运行
我们可以执行以下命令,看看容器是否启动正常
docker ps |
修改数据库
启动容器后,我们还需要进入mongo容器内部,创建数据库和添加数据库用户
进入容器
执行 docker ps
查看mongo容器的id
然后执行以下命令
docker exec -it mongo容器id /bin/bash |
成功进入容器后,我们执行以下命令,即可进入mongodb的命令行
mongo |
创建数据库
进入mongodb命令行后,执行以下命令即可创建数据库
这里我们要创建一个 yapi
数据库,嗯没错,数据库的名字就叫 yapi
,当然你也可以换成其他名字
use yapi; |
创建数据库用户
当我们执行上一个命令创建好数据库后,我们接下来要创建这个数据库的用户
执行以下命令,创建一个用户
db.createUser({ |
- user:用户名
- pwd:密码
- roles:权限集合
- role:权限,
readWrite
代表读写权限 - db:数据库,代表这个用户的这条权限,在哪个数据库有效果
- role:权限,
部署yapi
我们创建好数据库和数据库用户后,接下来就可以去部署了
yapi的安装程序运行在9090端口,但是在docker-compose.yml中我们已经配置的端口映射3003:9090,所以我们只需要去访问3003端口即可进入安装界面
浏览器打开以下地址,进入安装界面
http://服务器地址:3003 |
然后填写以下信息,点击部署
点击开始部署后,这个模态框一定不要关闭!!!
当它安装完成后,模态框的最后会打印出你的 登录名和登录密码,最好记下来
然后就可以关掉这个安装页面了
启动yapi
我们上一步做的工作仅仅是部署,但是还没有启动
就类似于你 git pull
了别人的代码,但是你只是下载下来了,但是没有 yarn start
启动
我们接下来就需要去启动它
我们的yapi是运行在容器内的,所以它的项目代码也是在容器内,我们要启动的话,也需要进入到容器内执行
执行 docker ps
,找到 yapi
所在容器的id,然后进入容器
docker exec -it yapi容器id /bin/bash |
进入容器后,我们进入到我们的部署路径即可,部署路径是在安装的时候,在表单中填写的路径,我们是部署在/my-yapi中的
所以,我们执行以下命令,启动它的入口文件 app.js
node /my-yapi/vendors/server/app.js |
然后,我们就可以在浏览器中,访问以下地址,正式使用yapi了
http://服务器地址:3000 |
这里的3000端口同样是我们在docker-compose.yml中就已经配好了的,3000:3000,宿主机的3000端口映射到容器内部的3000端口
当然,你也可以用pm2来运行
pm2 start /my-yapi/vendors/server/app.js -i max |
如果还没有安装pm2的话,可以执行以下命令安装
npm i pm2 -g |
结语
到此,我们就完成了yapi的部署工作,总的来说并不是很复杂,比较坑的地方就在于nodejs的版本号上,版本太高的话,会安装失败,反正node14是99%会失败
其他
我做了一个yapi的docker镜像,大家也可以使用我的镜像来运行
- 参考我的DockerHub地址:Docker Hub