node:internal/fs/utils:356
anythingllm  |     throw err;
anythingllm  |     ^
anythingllm  | 
anythingllm  | Error: EACCES: permission denied, mkdir '/home/powersys/work/anything-llm-storage/models/context-windows'
anythingllm  |     at Object.mkdirSync (node:fs:1391:3)
anythingllm  |     at new ContextWindowFinder (/app/server/utils/AiProviders/modelMap/index.js:39:10)
anythingllm  |     at Object.<anonymous> (/app/server/utils/AiProviders/modelMap/index.js:206:31)
anythingllm  |     at Module._compile (node:internal/modules/cjs/loader:1364:14)
anythingllm  |     at Module._extensions..js (node:internal/modules/cjs/loader:1422:10)
anythingllm  |     at Module.load (node:internal/modules/cjs/loader:1203:32)
anythingllm  |     at Module._load (node:internal/modules/cjs/loader:1019:12)
anythingllm  |     at Module.require (node:internal/modules/cjs/loader:1231:19)
anythingllm  |     at require (node:internal/modules/helpers:177:18)
anythingllm  |     at Object.<anonymous> (/app/server/utils/AiProviders/gemini/index.js:11:23) {
anythingllm  |   errno: -13,
anythingllm  |   syscall: 'mkdir',
anythingllm  |   code: 'EACCES',
anythingllm  |   path: '/home/powersys/work/anything-llm-storage/models/context-windows'
anythingllm  | }
 

这个错误是因为容器内程序试图在宿主机路径 /home/powersys/work/anything-llm-storage/models/context-windows 创建目录,但没有权限(EACCES: permission denied)。


解决思路

  1. 确认宿主机路径权限

ls -ld /home/powersys/work/anything-llm-storage
ls -ld /home/powersys/work/anything-llm-storage/models

确保你当前运行容器的用户有权限在这个路径创建目录。


  1. 修改目录权限(如果安全允许)

给目录设置权限,允许容器用户创建:

sudo chown -R 1000:1000 /home/powersys/work/anything-llm-storage

这里 1000:1000 对应 Docker 里运行的用户(你的 docker-compose.ymluser: "${UID:-1000}:${GID:-1000}"),确保 UID 和 GID 对应正确。

或者使用更宽松的权限(不建议长期使用):

sudo chmod -R 777 /home/powersys/work/anything-llm-storage

  1. 确认 docker-compose 中挂载的卷与运行用户

你的 docker-compose.yml 里:

volumes:
  - "/home/powersys/work/anything-llm-storage:/app/server/storage"
user: "${UID:-1000}:${GID:-1000}"
  • 容器内程序写入的是 /app/server/storage/models/context-windows,映射到宿主机是 /home/powersys/work/anything-llm-storage/models/context-windows

  • 你需要确保宿主机 /home/powersys/work/anything-llm-storage 下的文件夹和权限对 UID 1000 的用户开放。


  1. 重新启动容器

修改权限后,停止并删除容器,重新启动:

docker-compose down
docker-compose up -d

总结

  • 这个错误是宿主机挂载目录权限不足导致的。

  • 通过调整宿主机目录权限或属主,使容器运行的用户能写入即可解决。

如果你需要,我可以帮你写完整的命令步骤。需要告诉我你宿主机当前用户的 UID 和 GID 么?(id 命令可以查看)

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐