0%

docker部署yapi

本文讲解如何在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
RUN npm install -g yapi-cli --registry https://registry.npm.taobao.org
CMD ["yapi", "server"]
EXPOSE 9090

巨坑的地方就在这里,我们的nodejs版本不要高于12!!!否则很大几率会安装yapi失败,还会引申出各种各样的错误!!!


编写docker-compose.yml

由于yapi用到了mongodb,所以我们仍需要一个mongodb的容器,为了更好的编排,我们采用docker-compose来完成

在项目所在目录/opt/yapi中创建docker-compose.yml,内容如下:

version: '3'
services:
mongo:
image: mongo:5
container_name: mongo
restart: always
expose:
- 27017
volumes:
- /data/yapi/mongo:/etc/mongo
networks:
- yapi-net
yapi:
image: node:12
restart: always
build:
context: .
ports:
- 3003:9090 # 安装面板端口
- 3000:3000 # 程序运行端口, 在通过界面安装yapi时也需要网站运行端口为3000端口
volumes:
- /data/yapi/vendors:/my-yapi/vendors
depends_on:
- mongo
networks:
- yapi-net
networks:
yapi-net:
  • version: 代表所采用的docker-compose语法版本,我们写3就可以了
  • services:代表我们的服务,其实也就是我们的程序
  • mongo:服务名,同时也是这个docker的hostname(主机名),可以自定义
  • yapi:服务名,同时也是这个docker的hostname(主机名),可以自定义
  • image: 镜像名:版本号,如果本地没有这个镜像,docker会自动pull下来
  • container_name:容器的名称,也是可以自定义
  • restart:always, 容器如果意外停止,则自动重启容器
  • expose:向其他容器暴露端口,但不向宿主机暴露
  • ports:同时向其他容器和宿主机暴露端口
  • build:代表使用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: "yapi",
pwd: "123456",
roles: [
{ role: "readWrite", db: "yapi" }
]
})
  • user:用户名
  • pwd:密码
  • roles:权限集合
    • role:权限,readWrite代表读写权限
    • db:数据库,代表这个用户的这条权限,在哪个数据库有效果

部署yapi

我们创建好数据库和数据库用户后,接下来就可以去部署了

yapi的安装程序运行在9090端口,但是在docker-compose.yml中我们已经配置的端口映射3003:9090,所以我们只需要去访问3003端口即可进入安装界面

浏览器打开以下地址,进入安装界面

http://服务器地址:3003

然后填写以下信息,点击部署

image-20211207105622966

点击开始部署后,这个模态框一定不要关闭!!!

当它安装完成后,模态框的最后会打印出你的 登录名和登录密码,最好记下来

然后就可以关掉这个安装页面了


启动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镜像,大家也可以使用我的镜像来运行

-------------本文结束    感谢阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!