类别:Linux / 日期:2025-06-28 / 浏览:367 / 评论:0
一、环境:甲骨文的服务器:
OS: Ubuntu 22.04.5 LTS x86_64 --安装minimal版
Host: KVM/QEMU (Standard PC (i440FX + PIIX, 199
Kernel: 6.8.0-1027-oracle
CPU: AMD EPYC 7551 (2) @ 1.996GHz --1核心
GPU: 00:02.0 Vendor 1234 Device 1111
Memory: 242MiB / 956MiB --1G内存
由于使用的系统默认没安装虚拟内存swap,后期从硬盘划分2G作为虚拟内存
二、安装docker
不在这篇讨论,略。
三、拉取思源镜像
由于国内限制,有条件的先连接到外网,记得设为全局模式连接。
docker pull b3log/siyuan:latest
lastest代表最新版本
检查镜像
四、部署容器
以下是官方的要求说明:
-------------------------------------------------------------
使用 docker run b3log/siyuan
运行容器时,请带入以下参数:
--workspace
:指定工作空间文件夹路径,在宿主机上通过-v
挂载到容器中--accessAuthCode
:指定访问授权码
更多的参数可参考 --help
。下面是一条启动命令示例:
docker run -d \
-v workspace_dir_host:workspace_dir_container \
-p 6806:6806 \
-e PUID=1001 -e PGID=1002 \
b3log/siyuan \
--workspace=workspace_dir_container \
--accessAuthCode=xxx
PUID
: 自定义用户 ID(可选,如果未提供,默认为1000
)PGID
: 自定义组 ID(可选,如果未提供,默认为1000
)workspace_dir_host
:宿主机上的工作空间文件夹路径workspace_dir_container
:容器内工作空间文件夹路径,和后面--workspace
指定成一样的另外,也可以通过
SIYUAN_WORKSPACE_PATH
环境变量设置路径。如果两者都设置了,命令行的值将优先。accessAuthCode
:访问授权码,请务必修改,否则任何人都可以读写你的数据另外,也可以通过
SIYUAN_ACCESS_AUTH_CODE
环境变量设置授权码。如果两者都设置了,命令行的值将优先。
-----------------------------------------------------------
以上官方的说明里漏了一个很重要的参数,就是部署完后,重启不能自动运行。为解决这个问题,参考如下:
要让 Docker 容器在重启后自动运行,有以下方法:
1. 使用 --restart 参数
在运行容器时指定重启策略:
docker run --restart unless-stopped -d your_image
或者:
docker run --restart always -d your_image
unless-stopped:除非明确停止容器,否则总是重启(推荐)
always:无论退出状态如何总是重启
on-failure:仅在非零退出状态时重启
2. 修改已有容器的重启策略
对于已经运行的容器:
docker update --restart unless-stopped container_name_or_id
所以,结合上面,我的部署命令是:
docker run -d \
-v /siyuan/workspace:/siyuan/workspace \
-p 6666:6806 \
-e PUID=1001 -e PGID=1002 \
b3log/siyuan \
--workspace=/siyuan/workspace/ \
--accessAuthCode=25052505 \
--restart unless-stopped
说明:
以上的-p 6666:6806中,6666代表是ubuntu系统所开放的端口,6806是docker 思源笔记的端口。可以理解为有一台虚拟路由器位置于ubuntu和docker容器之间,将docker容器的6806端口映射到6666,这样在局域网中可以通过6666端口访问docker容器。不是必须这样设置,但这样设置的好处是,为后面的外网映射保持一致,比较容易记。例如外网映射也是6666,那外网和局域网大家只记得6666端口就可以了,不用记两个端口。当然也可以外网映射默认的6806端口,但这样不是很安全。
--accessAuthCode=25052505 的意思是网页打开思源笔记时所输入的密码,这个最好要设置,不然不安全
--restart unless-stopped 意思是保持开机启动,但手动停止的除外。手动停止的想恢复,手动启动容器就可以了。
3、验证容器是否运行
用docker ps命令即可
status显示为up
或docker ps -a ,可以显示所有容器状态,包括启动和未启动的
4、思源保存的位置
根据以上部署命令,保存的位置是/siyuan/workspace。