在重建之前进行 YML 验证?

这是在一个典型的 Docker 安装的私有 VPS 上的自托管 Discourse 安装中进行的。

我又犯了同样的错误:
我等待了两个小时的“完美”更新重建到 v3.4.0.beta2-dev
然后添加了几行到 app.yml,又等待了两个小时进行另一次重建。
(为什么分开操作?因为如果可能出错,双重打击永远不好。)
然后我在日志中发现了运行时错误,因为我忘记在 app.yml 中添加空格(用于 MaxMind 账户和密钥)。
所以今晚我需要再进行一次重建。

这超过了六个小时的虚拟停机时间,而 WordPress 或其他 CMS 网站在完全相同的情况下只需要几分钟。这简直是“糟糕的用户体验”,因此是“反营销”——这对平台来说一点好处都没有。

我不得不进行第二次重建的唯一原因是我添加了这两行该死的内容。我真希望仅仅因为配置文件中的这个小改动就不需要进行完全重建。

  1. 有没有讨论过在重建之前对 yml 文件进行验证?这个简单的功能本可以消除耗时的操作和后续问题。

  2. 有没有讨论过一个预处理器,用于确定在特定更改后是否需要进行完全重建?

  3. 我很惊讶 YAML 错误没有在日志中报告。主运行时 .yml 文件夹以及其他文件夹没有进行语法错误检查是有原因的吗?……或者更有经验的管理员会在重建之前自己进行代码检查?:thinking:

我之所以选择在 Docker 中托管,是因为我相信这是最“简单”的平台,以便将来将此系统移交给他人维护。如果事实并非如此,并且我选择了“不简单”甚至“最慢”的选项,也许我应该考虑其他安装选项。

谢谢!

一个包含两个容器的设置可以在旧容器继续运行时构建新容器,因此在新容器启动时只有一分钟左右的停机时间。

这是一个非常好的重建时间。我猜您使用的是树莓派或其他非常慢的设备?

通常,如果存在 yml 配置问题,您会立即收到通知。

您可以使用此代码检查文件大小,然后分析是否是空间问题。

/var/discourse# du -sh /* | sort -h

除了 MaxMind 的那两个空格。它可以通过,但地理位置不起作用。所以它本身不是 yml 语法错误,但仍然是一个错误 :man_shrugging:

1 个赞