记一次 Memos 服务 502
在博主对服务器进行意外断电测试时, 发现 Memos 服务在机器下线后未重启或灾备.
本文主要记录故障的排除过程.
确认服务器状态
服务器在断电重启后, 自动拉起了需要的容器.
但唯独没有 Memos, 为什么呢?
Docker Compose
我们可以发现, Docker Compose 并没有帮我们拉起 Memos.
此时问题集中在博主的 Docker Compose 或者写的配置文件, 由于别的容器被正常拉起, 不怀疑 Compose 出现问题.
那就是我的锅 (小声
查看配置文件, 我们可以发现 restart: on-failure, 注意这个 on-failure.
services:
memos:
image: neosmemo/memos:stable
container_name: memos
restart: on-failure
volumes:
- ***:/var/opt/memos
ports:
- ***:***
此时我们需要知道 on-failure 的默认行为.
我们可以找到:
on-failure 在容器非正常退出时(退出状态非 0),才会重启容器。
问题此时找到答案, 系统重启后的 Docker 容器由于并未意外退出, 故不会重启.
此时我们需要改 on-failure 为 unless-stopped:
在容器退出时总是重启容器,但是 Dockerd 启动之前就已经停止运行的容器不算在内。
重新构建项目, 成功, 一场闹剧到此结束, Memos 也恢复正常.
这个故事告诉我们, 要细细考量每个参数不同值的默认行为.