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
vimseatable-autostart.sh
将以下代码块粘贴到文件中:
#!/bin/bash
case$1in
start)
cd/opt/seatable/
dockercomposeup-d
;;
stop)
cd/opt/seatable/
dockercomposedown
;;
restart)
cd/opt/seatable/
dockercomposedown
sleep10
dockercomposeup-d
;;esac注意:如果 SeaTable 的 docker-compose.yml 不在默认目录/opt/seatable中,请更改代码中的路径。
为脚本添加可执行权限:
chmodu+xseatable-autostart.sh
配置systemd单元文件
在主机目录/etc/systemd/system中创建一个新的单元文件并在文本编辑器中打开它:
cd/etc/systemd/system
vimseatable.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 容器。
开启自动启动
使用以下命令启用自动启动:
sudosystemctlenableseatable
同样,使用以下命令禁用自动启动:
sudosystemctldisableseatable
您可以使用以下命令检查 SeaTable 的自动启动状态:
sudo systemctl is-enabled seatable