现象
用户在FastGPT V4.8.5私有部署环境中出现两个问题:一是无法创建应用,调用/api/core/app/create接口时报错1: Operation not permitted;二是上传文件后无法进行下一步操作。查看容器日志可发现MongoDB存储引擎报错:WT_SESSION.create: __posix_open_file, 815: /data/db/collection-13--4210291667907924385.wt: handle-open: open: Operation not permitted。用户环境为Windows 11 23H2下的WSL2 Ubuntu24.04,使用Docker 4.31.1部署。
可能原因
从报错日志可知,MongoDB尝试创建集合文件时无法打开目标文件,核心原因是MongoDB容器对挂载的数据目录缺乏足够的读写权限。由于用户通过WSL2运行Docker,宿主机目录的权限配置可能未适配容器内MongoDB进程的权限要求,MongoDB容器默认使用UID 999的mongod用户运行。
排查步骤
- 查看MongoDB和FastGPT容器的日志,确认是否存在
Operation not permitted以及WiredTiger文件打开失败的报错内容。 - 登录WSL2的Ubuntu终端,进入docker-compose.yml配置的MongoDB数据挂载目录,执行
ls -ld命令查看目录所有者与权限。 - 确认目录所有者是否为UID 999的用户,或是否具备读写权限。
- 检查docker-compose.yml中MongoDB服务的卷挂载配置,确认挂载路径正确无误。
解决与验证
- 执行
docker compose down停止所有容器。 - 修改MongoDB数据挂载目录的权限,将所有者设置为UID 999的用户:
sudo chown -R 999:999 /your/mongo/data/path,其中/your/mongo/data/path替换为实际的挂载目录。 - 重新启动容器:
docker compose up -d。 - 尝试创建应用与上传文件,确认操作可正常完成。再次查看容器日志,确认不再出现
Operation not permitted相关报错。