docker部署YApi

1,174 阅读3分钟

docker部署YApi

最近公司使用的api管理工具经常挂掉,供应商也不怎么维护了,导致开发使用起来很痛苦,综合考虑之后决定用YApi替代掉之前的GoApi,选择YApi的的原因有几点,一是因为YApi支持swagger文档,能够很方便的把现有文档导进去,迁移的成本比较低,二是因为YApi完全是开源的,而且允许在此基础上进行二次开发。唯一需要注意一点的YApi进入了基本没有人维护的状态,后期遇到问题需要自己解决。

rdUiqI.jpg

安装docker以及docker-compose

这里是采用社区分享的已经写好的docker-compose.yml文件和已经搭建好的docker镜像,简单方便,不过其中有几个坑需要注意一下,为了不凑篇幅,这里只将比较坑的点列出来,具体的安装步骤请参考链接

传送门

安装过程中需要注意到的坑

坑1

linux的docker-compose安装

如果你去百度或者google安装docker-compose,基本上所有的博主都会让你到github去curl一个安装包,但是我在实际的安装过程中发现,从github上curl下来的docker-compose是无法启动的,报错显示是无法从当前文件中找到docker-compose.yml文件,可是当你ls的时候,明明是有这个文件的。

这个时候可能就很懵逼了,当时我以为是docker-compose的版本问题,改了版本号下了最新版的docker-compose也不行,搞了很久也找不出来问题,我就怀疑是不是docker-compose安装的不对,最后尝试了一个博主贴出来的安装方式解决了这个问题。如果有人遇到相同的问题,可以前往这个传送门 ,如果要下载最新版本的,修改一下版本号就可以了。

坑2

使用docker-compose启动mongodb死活启动不了,查看日志报错提示没有'/data/db'的权限,如果你遇到了这个问题,那么你将花费很久的时间去搜索解决办法也无法解决,我搜索过基本上没有博主讲清楚过这个问题,在这个docker部署方案的github里有人提过一个issue,不过作者并没有解决,而是closed掉了。接下来我讲解一下这个问题,以及我是怎么解决这个问题的。

首先这个问题出现的原因是你的linux上面安装了一个selinux的模块,这个模块的作用就是对文件的读写进行权限控制的。当使用docker-compose去启动mongodb的时候,需要将mongodb容器的数据挂载到宿主机器上,当然这个步骤是必须的,如果不把数据挂载到宿主机器上,关闭容器的时候你的数据也就没有了。在docker-compose.yml文件中的volumes写的 ./data/db:/data/db,其实是把./data/db映射到mongodb容器的/data/db中,但是因为宿主机器的权限和docker容器的权限并不是一致的,宿主机的用户在mongodb容器中并没有操作文件的权限只是一个普通的外部用户权限,所以就没法启动mongodb。

解决这个问题的办法就是让宿主机的权限和docker容器的权限保持一致就可以了,通过在docker-compose.yml上加上一行privileged:true,让container中的用户拥有真正的宿主机的权限。

结尾

这是我在部署YApi中遇到的问题,并记录下来,希望能对寻找解决方案的你有所帮组就好。