这听起来可能有点吹毛求疵,但我认为这里有一些重要的细微差别。
您提供的选项混合了设置的传递方式和传递的设置内容。
关于设置的传递方式,有两点适用:
-
目前环境变量的使用方式
DISCOURSE_WHATEVER环境变量目前在 Docker 构建过程中用于在discourse.conf中创建条目,这些条目在 Discourse 中可作为GlobalSetting或SiteSetting使用。Discourse 无法感知这些环境变量本身。 -
discourse.conf条目的限制
虽然 GlobalSettings 具有抑制和覆盖 SiteSettings 的便利功能,但它们也带来了一个限制,即在多站点环境中,它们适用于多站点中的所有站点。
这两点结合起来意味着,在 Discourse 内部,SiteSetting 是最灵活的。它们可以是实际的 SiteSettings,可以来自 discourse.conf,而这些条目可以来自 DISCOURSE_ 环境变量。我认为那里没有真正的选择,SiteSetting 是最灵活的,并且没有缺点,因为它们是功能上的超集。您可以使用 GlobalSettings 代替,而这些设置可以通过环境变量填充。
这暗示唯一的实际选择是是否使用凭证的自动发现。在我个人看来,自动发现总是很容易出错,所以我更倾向于使用显式的方法。
也就是说,有一个 SiteSetting 可以某种方式指向实际的、具体的凭证。