Docker 开机自启动

Seafile 14.0 和 13.0 使用 Docker Compose 部署时,可以通过以下任意一种方式,让 Seafile 在服务器重启后自动启动。以下命令以 Docker Compose 配置目录 /opt/seafile 为例。如果您的部署目录不同,请将路径替换为实际路径。
开始前,请确认 Seafile 已通过 Docker Compose 正常部署,并且 Docker 服务能够随系统启动:
            
                
                
sudo systemctl enable --now docker
提示: 以下两种方式任选其一即可。第一种方式通过 systemd 管理整个 Docker Compose 项目;第二种方式通过 Docker 的重启策略管理各个容器。
方式一:通过 systemd 启动 Docker Compose
1. 创建 systemd 服务文件
执行以下命令:
            
                
                
sudo vim /etc/systemd/system/docker-compose.service
添加以下内容:
            
                
                
[Unit]
Description=Seafile Docker Compose Service
Requires=docker.service
After=docker.service
[Service]
Type=forking
RemainAfterExit=yes
WorkingDirectory=/opt/seafile
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
其中:
  • WorkingDirectory 必须是 Seafile Docker Compose 配置文件所在的目录,例如 /opt/seafile 。此目录通常包含 .env 、 seafile-server.yml 和 caddy.yml 等文件。
  • ExecStart 在系统启动时执行 docker compose up -d ,启动 .env 中 COMPOSE_FILE 指定的服务。
  • ExecStop 在停止该 systemd 服务时执行 docker compose down ,会停止并移除项目容器。该命令不会删除持久化数据目录,但不应在不了解影响的情况下手动停止服务。
  • 示例中的 Docker 可执行文件路径为 /usr/bin/docker 。可以运行 command -v docker 查看实际路径,如有不同,请相应修改 ExecStart 和 ExecStop 。
2. 设置服务文件权限
            
                
                
sudo chmod 644 /etc/systemd/system/docker-compose.service
3. 加载并启用服务
            
                
                
sudo systemctl daemon-reload
sudo systemctl enable --now docker-compose.service
查看服务状态:
            
                
                
sudo systemctl status docker-compose.service
如果需要查看启动日志,可以运行:
            
                
                
sudo journalctl -u docker-compose.service -b --no-pager
也可以进入部署目录,确认容器是否正常运行:
            
                
                
cd /opt/seafile
docker compose ps
方式二:设置容器重启策略
在 Seafile Docker Compose 使用的各个 YAML 配置文件中,为 每个需要开机自动启动的服务 添加以下配置:
            
                
                
restart: unless-stopped
例如,编辑 /opt/seafile/seafile-server.yml ,在已有的 seafile 服务定义下添加该选项:
            
                
                
services:
seafile:
# 保留该服务原有的 image、volumes、environment 等配置
restart: unless-stopped
注意: 上述示例只展示 restart 的添加位置,并不是完整的 Compose 文件。请在原文件中添加该字段,不要用示例覆盖现有配置。
除 seafile 外,还应检查数据库、Redis、Caddy 和其他已启用的组件。需要修改哪些 YAML 文件,以 .env 中 COMPOSE_FILE 的实际配置为准,例如:
  • Seafile 14.0 社区版:检查 seafile-server.yml 、 caddy.yml ,以及已启用的扩展组件文件。
  • Seafile 14.0 专业版:除上述文件外,使用 SeaSearch 时还需检查 seasearch.yml 。
  • Seafile 13.0 专业版:如果部署了 Elasticsearch,还需检查对应的 elasticsearch.yml ;其他组件同样按实际部署情况设置。
保存文件后,在 Compose 配置目录检查配置并应用更改:
            
                
                
cd /opt/seafile
docker compose config
docker compose up -d
配置 restart: unless-stopped 后,只要 Docker 服务随系统启动, 已经创建且未被手动停止的容器 就会按该重启策略恢复运行。
注意: 执行 docker compose down 会删除项目容器。容器不存在时,Docker 的重启策略不会重新创建它们。此时需要在 Compose 配置目录再次执行 docker compose up -d 。
检查开机自启动
完成上述任一方式后,建议在维护窗口重启服务器验证。重启后执行:
            
                
                
cd /opt/seafile
docker compose ps
如果容器没有正常运行,可查看日志:
            
                
                
docker compose logs --follow
如果使用方式一,还可以通过 systemctl status docker-compose.service 和 journalctl -u docker-compose.service -b 检查 systemd 服务的启动情况。