【应用反馈】思源笔记 v3.7.0 启动失败,模板 command 配置未适配新版 CLI 架构
问题概述
1Panel 应用商店中的思源笔记,在镜像升级到 b3log/siyuan:v3.7.0 后,容器无法正常启动,持续循环重启。经排查,是应用模板的 Docker Compose command 配置未适配思源 v3.7.0 的内核 CLI 破坏性变更导致。
环境信息
- 1Panel 版本:请自行补充你的面板版本,例如 v1.10.5
- 思源笔记应用镜像: b3log/siyuan:v3.7.0
- 部署方式:应用商店一键安装/升级
复现步骤
- 在应用商店全新安装思源笔记,或升级现有思源笔记到 v3.7.0 版本;
- 填写「访问授权码」等基础配置后启动应用;
- 查看容器日志,发现错误信息循环打印,服务始终无法正常启动,6806 端口无监听。
关键错误日志
plaintext
Starting SiYuan with UID:1000 and GID:1000 in workspace /siyuan/workspace/
Error: unknown flag: --accessAuthCode
Usage:
kernel [command]
Available Commands:
serve Start kernel HTTP server
…
根因分析
思源笔记 v3.7.0 对内核命令行(CLI)做了架构重构,改为标准子命令模式,属于向下不兼容的破坏性变更:
- v3.6.5 及更早版本:执行 kernel 主程序时,默认隐含 serve 子命令, --accessAuthCode 等服务参数可以直接跟在主命令后使用;
- v3.7.0 及之后版本:必须显式指定 serve 子命令, --accessAuthCode 是 serve 子命令的专属参数,不能直接作为 kernel 主程序的全局参数。
当前应用商店模板的 command 配置如下,缺少 serve 子命令,导致内核无法识别参数,启动直接报错:
yaml
command:
- --workspace=/siyuan/workspace/
- --accessAuthCode=${ACCESS_AUTH_CODE}
修复方案建议
方案一(最小改动,兼容原有变量逻辑)
在 command 首行添加 serve 子命令即可,改动量最小,不影响原有表单变量逻辑:
yaml
command:
- serve
- --workspace=/siyuan/workspace/
- --accessAuthCode=${ACCESS_AUTH_CODE}
方案二(更稳妥,降低后续版本兼容风险)
移除 command 块,改用官方支持的环境变量传递授权码,后续版本升级不易再出现参数层级兼容问题:
yaml
environment:
- TZ=${TIME_ZONE}
- PUID=1000
- PGID=1000
- SIYUAN_ACCESS_AUTH_CODE=${ACCESS_AUTH_CODE}
麻烦官方尽快修复应用模板,避免更多用户升级后遇到启动失败的问题,感谢!