Hermes WebUI 双容器部署报 “hermes-agent source not found“ 怎么修复卷挂载

发布时间:2026/9/14 17:41:01
Hermes WebUI 双容器部署报 “hermes-agent source not found“ 怎么修复卷挂载 Hermes WebUI 双容器部署报 hermes-agent source not found 怎么修复卷挂载【免费下载链接】hermes-webuiHermes WebUI: The best way to use Hermes Agent from the web or from your phone!项目地址: https://gitcode.com/GitHub_Trending/he/hermes-webui用docker-compose.two-container.yml跑 Hermes WebUI 的双容器部署时hermes-webui容器的启动日志可能出现这样一段警告!! WARNING: hermes-agent source not found. !! Looked in: /home/hermeswebui/.hermes/hermes-agent !! /opt/hermes它表示 WebUI 容器在启动时找不到 hermes-agent 的源码说明 agent 容器和 WebUI 容器之间共享源码的卷没有配置对。这篇文档说明这个警告的确切含义、双容器部署中卷应该长什么样以及怎么通过修复合成挂载把警告消掉。这个警告意味着什么在双容器架构里hermes-webui镜像本身不打包 agent 的 Python 依赖。容器启动时入口脚本 docker_init.bash 会按顺序检查两个路径寻找 agent 源码/home/hermeswebui/.hermes/hermes-agent共享卷应挂载的位置/opt/hermes两个路径都要满足目录存在且包含pyproject.toml才算找到源码找到后才会从该路径把 agent 的依赖安装进 WebUI 的虚拟环境。如果两个路径都找不到脚本打印上面的警告并继续启动。警告本身会说明影响范围WebUI 会以降级的功能启动——没有模型自动检测no model auto-detection、没有人格路由no personality routing、没有 CLI 会话导入no CLI session imports。所以这不是一个可以忽略的提示修复目标就是让 WebUI 容器内的路径重新解析到 agent 源码。正常情况下源码通过hermes-agent-src命名卷在两个容器之间传递agent 容器把源码写入/opt/hermesWebUI 容器以只读方式把同一个卷挂到/home/hermeswebui/.hermes/hermes-agent。WebUI 侧是只读挂载agent 容器是唯一的写入方。修复主路径恢复 compose 文件里的命名卷docs/docker.md 的故障排查第 4 条对应 issue #858给出的结论是不要用 bind mount 替换随仓库提供的命名卷除非你明确知道自己在做什么。docker-compose.two-container.yml的默认配置就是正确的挂载形态services: hermes-agent: volumes: - hermes-home:/home/hermes/.hermes # Expose agent source so the WebUI can install dependencies from it - hermes-agent-src:/opt/hermes hermes-webui: volumes: - hermes-home:/home/hermeswebui/.hermes # Agent source mounted where docker_init.bash expects it. # Mounted read-only — the WebUI only reads this volume to install # the agents Python dependencies at startup (uv pip install). - hermes-agent-src:/home/hermeswebui/.hermes/hermes-agent:ro文件末尾必须声明这两个命名卷volumes: hermes-home: hermes-agent-src:操作步骤把你自定义的hermes-agent-src相关 volume 条目改回上面 docker-compose.two-container.yml 中的写法WebUI 侧保留:ro后缀。重建容器让挂载生效docker compose -f docker-compose.two-container.yml down docker compose -f docker-compose.two-container.yml up -d如果重建后警告仍在先确认hermes-agent-src卷不是空的。该卷在第一次up时从 agent 镜像的/opt/hermes初始化如果它此前被以错误内容初始化过删掉卷再重建可让它重新从镜像初始化hermes-home卷存放配置、会话和状态不要动docker volume ls docker compose -f docker-compose.two-container.yml down docker volume rm project_hermes-agent-src docker compose -f docker-compose.two-container.yml up -dproject换成你的 Compose 项目名默认是父目录名用docker volume ls核对实际名字。可选分支必须用 bind mount 时的要求如果你有特殊理由坚持用 bind mount 而不是命名卷docs/docker.md 给出的约束是选一个宿主机路径同时挂载到 agent 容器的/opt/hermes和WebUI 容器的/home/hermeswebui/.hermes/hermes-agent两个容器必须指向同一个宿主路径。docker-compose.two-container.yml头部注释给出了命名卷转 bind mount 的写法volumes: hermes-agent-src: driver: local driver_opts: type: none o: bind device: /opt/hermes-agent-source按 docs/docker.md Bind-mount migration 一节这种写法还有几条硬性要求宿主机目录必须能被容器 UID 读取。在宿主机运行id -u确认并把UID$(id -u)、GID$(id -g)写入.env让所有共享该卷的容器以相同 UID/GID 运行。如果用sudo跑 Compose不要依赖${HOME}默认值——sudo会把$HOME展开成/root导致挂载到错误目录。改用绝对路径并先用docker compose config确认渲染出来的挂载。宿主机.env若是 0640 权限需要设置HERMES_SKIP_CHMOD1或HERMES_HOME_MODE0640否则启动钩子会尝试强制 0600 并失败这是 WebUI 侧的凭据文件语义不要原样照抄到 agent 服务上agent 侧的HERMES_HOME_MODE作用于HERMES_HOME目录语义不同。改完 compose 文件后用docker compose config检查渲染结果确认两个服务引用同一个宿主路径再执行down/up -d重建。验证修复结果按以下顺序检查看启动日志确认警告消失docker logs hermes-webui成功状态是日志中不再出现hermes-agent source not found。源码找到时初始化脚本会继续走依赖安装步骤对应 docker_init.bash 中 Adding hermes-agents pyproject.toml base dependencies to the virtual environment 那段流程。注意该检查在依赖安装阶段执行所以修改挂载后必须重建容器downup -d仅重启不会重新触发安装分支。确认挂载在 WebUI 容器内可解析且包含入口脚本要求的关键文件docker exec hermes-webui ls -la /home/hermeswebui/.hermes/hermes-agent目录存在且其中有pyproject.toml说明入口脚本会把该路径识别为 agent 源码。如果 WebUI 侧的挂载变成了可写状态比如自定义 compose 时漏了:ro启动日志会打印另一条警告hermes-agent source mount is writable from the WebUI container。docs/docker.md 要求除非是有意做的本地开发 checkout否则保持 WebUI 侧的 agent 源码挂载为只读。限制与相关坑只读挂载不要去掉。多容器 compose 默认用只读挂载做纵深防御WebUI 只是从卷里读源码来安装依赖。docker_init.bash在路径可写时会主动警告。升级 agent 镜像时源码卷不会自动刷新。hermes-agent-src卷在首次up时从镜像初始化之后docker pull新镜像也不会更新卷内容新镜像的源码会被旧的卷内容遮住issue #1416。升级 agent 镜像的标准流程是down→docker volume rm project_hermes-agent-src→pull→up -d详见 docs/docker.md Upgrading the agent container 一节。这个场景的症状是源码看起来是旧版本和source not found不是一回事但操作的是同一个卷。三容器部署同理。docker-compose.three-container.yml 使用同样的hermes-agent-src卷模式修复方法一致docs/docker.md 的三容器排查命令把-f换成对应文件即可。如果按上述步骤处理后警告仍然出现docs/docker.md 建议收集以下信息用于排查或提交 issue使用的 compose 文件、docker logs hermes-webui的错误输出、docker exec hermes-webui id的输出、docker exec hermes-webui ls -la /home/hermeswebui/.hermes的输出。【免费下载链接】hermes-webuiHermes WebUI: The best way to use Hermes Agent from the web or from your phone!项目地址: https://gitcode.com/GitHub_Trending/he/hermes-webui创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考