4.3 新版本
从 4.3 版本开始,使用新版部署方法,SeaTable 将在 Docker 启动时自动启动。
注:若 SeaTable 容器不存在(执行了 docker compose down),则容器不会自动启动。
4.2 及之前版本
4.2 及之前版本,按照本手册中的说明设置 SeaTable 时,SeaTable 的 Docker 容器不会在系统重启后自动启动。将 SeaTable 添加到自动启动可最大限度地减少系统停机时间并防止服务中断。
依赖
这里使用的自动启动程序是
systemd
。systemd 是许多 Linux 发行版(包括 CentOS、Debian 和 Ubuntu)中默认的初始化程序,它为其控制的服务提供了方便的自动启动功能。
配置启动脚本
自动启动 SeaTable 基于以下三个组件
-
首先,一个能够使用 docker-compose.yml 启动、停止和重新启动 SeaTable 的脚本。
-
第二,使用启动脚本的 systemd 单元文件。
-
第三,systemd 的原生自动启动能力。
准备启动脚本
在主机目录
/opt/seatable
中创建脚本文件并在文本编辑器中打开它:
cd /opt/seatable
vim seatable-autostart.sh
将以下代码块粘贴到文件中:
#!/bin/bash
case $1 in
start)
cd /opt/seatable/
docker compose up -d
;;
stop)
cd /opt/seatable/
docker compose down
;;
restart)
cd /opt/seatable/
docker compose down
sleep 10
docker compose up -d
;;
esac
注意:如果 SeaTable 的
docker-compose.yml
不在默认目录
/opt/seatable
中,请更改代码中的路径。
为脚本添加可执行权限:
chmod u+x seatable-autostart.sh
配置systemd单元文件
在主机目录
/etc/systemd/system
中创建一个新的单元文件并在文本编辑器中打开它:
cd /etc/systemd/system
vim seatable.service
将以下代码复制到文件中:
[Unit]
Description=SeaTable
After=network.target
[Service]
ExecStart=/opt/seatable/seatable-autostart.sh start
ExecStop=/opt/seatable/seatable-autostart.sh stop
User=root
Type=forking
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
[Install]
WantedBy=multi-user.target
注意:如果
seatable-autostart.sh
没有保存在默认的
/opt/seatable
目录中,请更改代码中的路径。
现在,启用和停止 SeaTable 可以使用以下 systemctl 命令:
-
停止所有 SeaTable 容器: sudo systemctl stop seatable
-
启动所有 SeaTable 容器: sudo systemctl start seatable
-
重新启动所有 SeaTable 容器: sudo systemctl restart seatable
注意:使用 systemctl 启动 SeaTable 时,必须先停止 SeaTable 的 Docker 容器。
开启自动启动
使用以下命令启用自动启动:
sudo systemctl enable seatable
同样,使用以下命令禁用自动启动:
sudo systemctl disable seatable
您可以使用以下命令检查 SeaTable 的自动启动状态:
sudo systemctl is-enabled seatable