问题出现

今天将Docker版本思源笔记升级到1.5.3版本后,发现无法正常访问,显示 502 Bad Gateway 错误。
经测试,1.5.0及以下版本无此问题,自1.5.1版本往上,问题依旧。

Snipaste_2021-11-29_14-23-21.jpg

问题排查

查找1.5.1更新说明,发现这么一条:Docker 容器以 1000:1000 用户组执行

因此,新版思源笔记需要在宿主机上增加gid为1000的用户组和uid为1000的用户,下面是相关代码

groupadd -g 1000 siyuan
# 添加了一个指定gid为1000的upload用户组
useradd -u 1000 -g siyuan siyuan
# 添加了一个uid为1000的用户,并加入到upload的组中

然而,理想很丰满,现实很骨感,运行提示groupadd: GID '1000' already exists,运行cat /etc/passwd查看用户信息,发现:

www:x:1000:1000::/home/www:/sbin/nologin

宝塔面板的www用户,被赋予了1000:1000

那也可以,谁是不是呢,哈哈

于是直接加一个-u命令就行了

问题解决

使用新的命令运行docker容器:

docker run --name siyuan_note --restart=always -u 1000:1000 -d -v /***/siyuan_note:/siyuan/workspace -p 6806:6806 b3log/siyuan:v1.5.4 --workspace=/siyuan/workspace --servePath="xxx.com:6806"

搞定

Snipaste_2021-11-29_15-14-35.jpg

参考链接

  1. Docker 容器以 1000:1000 用户组执行
  2. 1.5.2 和 1.5.1 的 docker 版本无法启动
  3. linux系统添加指定uid和gid的用户和组