Docker 搭建思源笔记
Docker 搭建
docker run --name siyuan -idt --restart=always -u $(id -u):$(id -g) -v /home/SiYuan:/home/SiYuan -p 6806:6806 b3log/siyuan:v2.8.7 --workspace=/home/SiYuan
设置反向代理
如果不设置反向代理,那么域名就无法访问,并且还需要 ws 来保证长连接,否则会出现报错
ngnix
location /ws {
proxy_pass http://127.0.0.1:6806;
proxy_read_timeout 60s;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'Upgrade';
}
apache
#PROXY-START/
<IfModule mod_proxy.c>
ProxyRequests Off
SSLProxyEngine on
ProxyPass / http://ip:6806/
ProxyPassReverse / http://ip:6806/
ServerName $host
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://ip:6806/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*) http://ip:6806/$1 [P,L]
</IfModule>
#PROXY-END/
设置定时打包 Docker
利用服务器 Linux 的定时计划,结合 docker 打包成 tar 来实现定时备份
在 Linux 下添加定时任务可以使用 crontab 命令,具体步骤如下:
- 打开终端,输入 crontab -e 命令,进入编辑模式。
- 在编辑模式中添加以下一行命令:
0 4 * * * /bin/bash /var/log/siyuan/backup.sh
这个命令将在每天的凌晨 4 点执行 backup.sh
然后再在 /var/log/siyuan/backup.sh
写入
docker rmi siyuanlog
docker commit de4fb69f5645 siyuanlog && docker save -o /var/log/siyuan/siyuanlog_$(date +%Y%m%d%H%M%S).tar siyuanlog && find /var/log/siyuan -type f -name "*.tar" -mtime +2 -exec rm {} +
这个命令序列首先尝试删除名为 "siyuanlog" 的 Docker 镜像,然后执行以下操作:
- 使用
docker commit
命令提交名为 "c40277f7884a" 的容器更改,并将结果镜像命名为 "siyuanlog"。 - 使用
docker save
命令将名为 "siyuanlog" 的镜像保存到一个文件。输出文件名基于当前的时间戳(年月日时分秒):/var/log/siyuan/siyuanlog_$(date +%Y%m%d%H%M%S).tar
。 - 执行
find
命令在/var/log/siyuan
目录下查找以.log
结尾、修改时间超过 2 天的文件。找到符合条件的文件后,使用一次rm
命令将它们全部删除。
这三个操作都是通过 &&
运算符连接的。这意味着只有在前一个命令成功执行后,后面的命令才会继续执行。如果任何步骤失败,后续步骤将不会执行。
这样,每天 0 点 0 分,就会自动将 id 为 c40277f7884a 的 docker 容器打包成镜像,并且保存为 tar 文件。
设置定时备份文件
# 定义源文件夹和目标文件夹
SOURCE_DIR="/home/SiYuan/data"
TARGET_DIR="/var/log/siyuan/datalog"
# 获取当前日期,用于创建命名压缩文件
DATE=$(date +"%Y-%m-%d")
# 创建目标文件夹,如果不存在
mkdir -p "$TARGET_DIR"
find $TARGET_DIR -type f -name "data_*" -mtime +2 -exec rm {} +
# 压缩源文件夹为tar.gz格式
tar -czvf "$TARGET_DIR/data_backup_$DATE.tar.gz" -C "$SOURCE_DIR" .
echo "Backup of $SOURCE_DIR completed and saved to $TARGET_DIR/data_backup_$DATE.tar.gz"
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于