之前工作都有点忙,而且也没有什么太复杂的问题,所以就一直没有记录博客了。
最近终于闲下来,于是自己想鼓捣一个mock平台,否则每次都要等后端的同学提供swigger,会严重影响工作效率。mock平台我选择使用yapi,这个平台功能十分强大,有用户权限,接口管理,自动化测试等等,大家可以去官网做更多的了解。
至于部署嘛,各位可以按照官网的方式在服务器上部署,先安装mongo,再安装node环境,再跑各种命令,整个流程虽然长,但也不复杂。而我就不一样了,我比较头铁,想给自己找点麻烦。。。所以我就选择用docker-compose部署,自己build镜像。其实主要是为了以后复用,不需要每次都要安装对应的东西,跑许多的流程。但是自己又不了解docker-compose,所以只能一个坑一个坑的踩了。
当然大家也可以去yapi的github上,里面有现成的docker部署方案,我推荐使用这个部署,可以配置很多属性,非常灵活。
下面进入正题:
既然是docker-compose,那么一定要有docker-compose.yml文件了:
networks:
yapi-mongo:
services:
mongodb:
container_name: mongo
environment:
MONGO_INITDB_DATABASE: yapi
image: "mongo:latest"
networks:
- yapi-mongo
ports:
- "27018:27017"
volumes:
- "./mongo/etc:/etc/mongo"
- "./mongo/data/db:/data/db"
yapi:
build: ./
depends_on:
- mongodb
image: yapi
networks:
- yapi-mongo
ports:
- "3621:3621"
command: >
/bin/bash -c '
while ! nc -z mongodb 27017;
do
echo "wait for mongodb";
sleep 1;
done;
echo "mongodb is ready!";
cd /docker-yapi/yapi/vendors && npm run install-server && node server/app.js
'
docker-compose中使用了两个镜像,一个是mongo数据库的镜像,为yapi提供数据库支持。而yapi镜像则是我们自己构建的镜像。用于构建可视化的界面。
既然docker-compose中有一个镜像是自己构建的(yapi镜像),那么一定的有Dockerfile喽:
FROM node:12-alpine
WORKDIR /docker-yapi
RUN apk add --no-cache git
RUN apk update && apk add bash
RUN mkdir yapi \
&& cd yapi \
&& git clone https://github.com/YMFE/yapi.git vendors
WORKDIR yapi
COPY ./config.json .
WORKDIR vendors
RUN npm install --production --registry https://registry.npm.taobao.org
EXPOSE 3000
这个镜像中引入了node环境,并且拷贝yapi的代码到本地,安装对应的依赖。
还有一个配置文件哦(config.json):
{
"port": "3621",
"adminAccount": "[email protected]",
"db": {
"servername": "mongo",
"DATABASE": "yapi",
"port": "27017"
},
"mail": {
"enable": false,
"host": "smtp.163.com",
"port": 465,
"from": "***@163.com",
"auth": {
"user": "***@163.com",
"pass": "*****"
}
}
}
这个配置文件主要关注port和db两个参数,一个是可视化界面的访问端口,一个是连接数据库的参数。到这一步就已经完成了,大家完全可以把这三个文件放到一个文件夹下,然后执行命令:
docker-compose up 然后访问3621端口就可以了。
下面是我在搭建过程中遇到的一些问题,如果对接下来的内容不感兴趣可以直接略过,当然别忘了留个赞再走啊喂。
1. 一定记得配置volumes,这样的话就可以把你添加的接口数据全部都保存下来,之后迁徙的时候可以直接导入。
2. yapi中访问数据库时一定一定一定要记得把config中的db的访问地址修改为你构建的mongo镜像的名称,之前从yapi官网拷过来时127.0.0.1,这个时候你就会发现你通过127.0.0.1是能访问到27017的,但是你的镜像里是访问不到的。
容器之间访问服务需要通过容器的名称加端口来访问对应容器内的服务,否则的话是访问不到的
3. 因为我们在启动界面之前需要先连接数据库并且初始化,所以就需要先启动mongo容器并且对应服务的启动之后再启动yapi容器才可以,如果仅仅设置depends_on只能控制容器启动的顺序,并不能保证在mongo服务启动之后再构建yapi内的项目,所以我们需要监听mongo容器的服务是否启动。
docker-compose文件中的command就是用于监听mongo服务端口27017是否可以访问,如果不可以的话就一直等待,可以的话就执行构建命令
4. 因为我们的镜像中只引入了node环境,但是node环境中并没有git和bash,所以当拉取代码的时候以及执行一些bin/bash命令时会报错,所以在构建时一定记得安装
RUN apk add --no-cache git
RUN apk update && apk add bash
以上就是我构建中遇到的印象比较深刻的问题,如果对各位有所帮助的话,希望各位能不吝点赞,毕竟一个字一个字敲实在太累了。有问题的话欢迎指正哦。
能看到这里的都是大帅比大漂亮,哈哈O(∩_∩)O。