首页 开发 记一次 Memos 服务 502
  • 本文约615字,阅读需2分钟
  • 143
  • 0

记一次 Memos 服务 502

在博主对服务器进行意外断电测试时, 发现 Memos 服务在机器下线后未重启或灾备.

本文主要记录故障的排除过程.

监控页面
监控页面

确认服务器状态

服务器在断电重启后, 自动拉起了需要的容器.

自动拉起
自动拉起

但唯独没有 Memos, 为什么呢?

Docker Compose

我们可以发现, Docker Compose 并没有帮我们拉起 Memos.

Bad Docker Compose
Bad Docker Compose

此时问题集中在博主的 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 也恢复正常.

恢复正常
恢复正常

这个故事告诉我们, 要细细考量每个参数不同值的默认行为.

评论
评论需审核,勿重复提交
请等待安全验证