seafile在飞牛下docker部署重启设备后seahub异常无法启动的解决方案
问题描述
seafile13 在飞牛下docker部署正常运行,但在重启设备后日志报错seahub启动异常
问题抽象
程序环境:AMD64架构 +飞牛OS + Docker + DockerCompose + seafile13(seafileltd/seafile-mc:13.0-latest + notification-server:13.0-latest + 移除其他模块) + MySQL8(独立部署,8.4.7) + Redis(独立部署,最新版)
这类问题我使用了多种方法(wait-for-it脚本等待redis、mysql)避免其他错误的发生,但依旧百分百出现,并且只有docker-compose清除重置才能解决,由此必定是seafile遗留什么文件导致无法直接重启容器恢复,总需要手动重置不是我想要的解决方案,经研究发现是因为设备重启后seafile容器中/opt/seafile/pids/seahub.pid文件的残留导致无法正常重启容器来恢复服务。
解决方案
开机命令清除容器中的pid文件
通过在/etc/systemd/system目录下增加一个docker-clean-pid-and-restart.service开机脚本来清除容器中的pid文件并重启容器来实现自动恢复
1 | sudo vim /etc/systemd/system/docker-clean-pid-and-restart.service |
其中我的容器名称为seafile,映射出来的端口号是9605可以用于容器是否启动过得判断,毕竟只有启动了才能进去删除指定文件,具体开机脚本如下:
1 | [Unit] |
重启daemon刷新读取开机脚本,并设置开机器自启
1 | sudo systemctl daemon-reload |
也可以在重启下飞牛试试