“msg”:“Error setting up listener”,“attr”:{“error”:{“code”:9001,......,“errmsg”:“Permission denied”}}

问题描述:

通过docker-compose部署的jayfong/yapi + mongo镜像,但mongodb容器一直启动不起来,通过docker logs查看日志找到error处:

“msg”:“Error setting up listener”,“attr”:{“error”:{“code”:9001,“codeName”:“SocketException”,“errmsg”:“Permission denied”}}

问题排查:

​ 通过搜索这个报错信息,大部分帖子都说的是mongodb启动时,会在/tmp下生成mongodb-xxx.sock的文件,没权限导致的报错,但docker部署的很少;

最终通过这篇帖子找到与我相似之处并且得到解决:

https://github.com/mbentley/docker-omada-controller/issues/138

问题解决:

​ 我的部署情况和上述帖子的情况一致,由于磁盘空间问题,曾经修改过docker默认的存储路径(修改前没这个问题,修改后出现这个问题)

​ 而修改 Docker 默认路径可能会导致权限问题,特别是涉及到容器内部的路径。这是因为 Docker 在设置容器内部路径权限时,可能会使用默认路径来计算权限。当你修改了 Docker 默认路径,容器内部的路径权限设置可能与实际不符,从而导致权限问题。

​ 在明确了容器内部路径权限问题的情况下,我是这么解决的:

​ 1.在某个路径下创建 tmp 文件夹供容器挂载,并且赋予文件夹足够的权限:chmod 777 /xxx/xxx/tmp

​ 2.修改docker-compose.yml,添加mongodb的挂载,将容器内部的/tmp挂载在创建的文件夹上

再次启动一切正常。

你可能感兴趣的:(yapi,mongodb,docker)