关于 Docker 思源笔记使用 Docker-compose 更改授权码的问题

私有化部署

按照 思源笔记 docker 部署及第三方同步 做的 docker 私有化部署。

yml 文件如下:

version: '3'

services:
  siyuan:
    image: b3log/siyuan:latest
    container_name: fllsiyuan
    restart: always
    volumes:
      - /siyuan:/root/document/fllsynote
    command: [--workspace=/root/document/fllsynote,--lang=zh_CN,--accessAuthCode=88888888]
    ports:  
      - "7777:6806"

更改授权码

长期使用后,授权码 8 个 8 太长,想修改为 11。

使用命令


docker-compose stop siyuan

然后修改 yml 文件中授权码为 11,如下。

version: '3'

services:
  siyuan:
    image: b3log/siyuan:latest
    container_name: fllsiyuan
    restart: always
    volumes:
      - /siyuan:/root/document/fllsynote
    command: [--workspace=/root/document/fllsynote,--lang=zh_CN,--accessAuthCode=11]
    ports:  
      - "7777:6806"

然后

docker-compose start siyuan

经测试授权码未更改为 11,原先的思源笔记数据还在。

使用新的命令

docker-compose up -d

经测试授权码更改为 11,原先的思源笔记数据丢失(提前已备份)。

问题

请教各位贤达,这是怎么回事?如何达到目的(docker-compose 修改授权码,思源笔记数据不丢失)?

还是 docker-compose 不能实现?

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22340 引用 • 89396 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • daziduan
    作者

    @ muxue

    你好。
    按你说的更改 yml

    version: '3'

    services:
    siyuan:
    image: b3log/siyuan:latest
    container_name: fllsiyuan
    restart: always
    volumes:

    • /root/document/fllsynote:/siyuan
      command: [--workspace=/root/document/fllsynote,--lang=zh_CN,--accessAuthCode=11]
      ports:
    • "7777:6806"

    启动之后。

    使用 docker-compose logs 之后显示下面信息:

    fllsiyuan | W 2024/07/24 19:23:09 file.go:210: determines whether [/root/document/fllsynote] is a directory failed: [lstat /root/document/fllsynote: permission denied]
    fllsiyuan | W 2024/07/24 19:23:09 working.go:258: use the default workspace [/home/siyuan/SiYuan] since the specified workspace [/root/document/fllsynote] is not a dir
    fllsiyuan | I 2024/07/24 19:23:09 working.go:147:

    我看显示错误,怎么修正错误?

    进容器之后
    /opt/siyuan/guide/20240530133126-axarxgx $ ls
    20240530101000-3xv6jjr.sy 20240530101000-bgv304g.sy 20240530101000-hkgs92c 20240530101000-mpln2lp.sy storage
    20240530101000-4qitucx 20240530101000-e6z5okf.sy 20240530101000-hkgs92c.sy 20240530101000-znj103k.sy
    20240530101000-4qitucx.sy 20240530101000-flot1gj.sy 20240530101000-jp793ic.sy assets

    请贤达指教。

    1 回复
  • 其他回帖
  • 你搞错了!是检查本地的 /siyuan 路径。

    对于 docker 而言,volumes 和 ports 配置项目中冒号左侧的是宿主机,右侧的是容器内,你现在是把容器内的 /root/document/fllsynote 映射到宿主机的 /siyuan 路径了。

    正如我上一条留言所说,我觉得你搞反了,果不其然,是真搞反了……

  • fradeet

    听你说不行个人去试了一遍,发现这个方法确实是已经被修复不能用了。Docker 版本目前只能使用命令参数去配置授权码。

    另外,从该版本开始通过 Docker 部署时必须设置访问授权码命令行参数 --accessAuthCode,不设置的话无法正常启动。

    思源笔记 v2.10.8 发布,修复缺陷 - 链滴 (ld246.com)

    个人忘记了这回事,非常抱歉。

  • 首先,您发的评论都没有回复别人,对方是收不到通知的。

    其次,我说的不了解 docker 运行原理说的是 docker 技术层面的东西。像这里的 volumes 设置和 ports 设置还有 command,全都是和 dockerfile 以及 docker 容器是如何被 build、run 息息相关的,虽然不是说你不懂 docker 技术架构就不能用 docker。但是会给你带来很多麻烦,比如您现在做的一堆错误尝试都是能避免的……

    不过有一点您说的很对,那就是做这些操作之前一定要备份好笔记。

    举个例子,最好的试错和学习方式,是拿一个 demo 镜像来看看这些 volumes 设置和 ports 设置还有 command 到底是什么东西,而不是拿需要特殊配置的思源容器来实验。

    最后,我看了您引用的那个教程,那个教程里面写的也有点误导人,容器里面用的反而是 root 路径,容器外面用的是 /siyuan,很容易产生误解。因为一般情况下都是不建议直接在 linux 宿主机的 / 根路径下创建文件夹存放数据的。这就好比你在 Windows 电脑上专门分了个盘作为思源的工作空间路径,很容易出现问题。

    1 回复
    1 操作
    muxue 在 2024-07-25 19:41:58 更新了该回帖
  • 查看全部回帖