Возможно, это звучит как придирка, но я считаю, что здесь есть важные нюансы.
Предлагаемые вами варианты представляют собой смесь того, КАК передаются настройки, и ЧТО именно передается.
Что касается того, КАК передаются настройки, применимы два момента:
- способ использования переменных окружения на данный момент
Переменные окружения DISCOURSE_WHATEVER в настоящее время используются в процессе сборки Docker для создания записей в discourse.conf, которые становятся доступными как GlobalSetting или SiteSetting внутри Discourse. Сам Discourse не воспринимает эти переменные окружения как таковые.
- ограничения записей в discourse.conf
Хотя GlobalSettings обладают удобной возможностью подавлять и переопределять SiteSettings, они также накладывают ограничение: в мультисайтовых окружениях они применяются ко всем сайтам в этой группе.
Сочетание этих двух факторов означает, что внутри Discourse SiteSetting являются наиболее гибким вариантом. Они могут быть настоящими SiteSettings, которые опционально могут поступать из discourse.conf, а эти записи, в свою очередь, могут приходить из переменных окружения DISCOURSE_. На мой взгляд, здесь нет реального выбора: SiteSetting — наиболее гибкий вариант и не имеет недостатков, поскольку является функциональным надмножеством остальных. Вы можете использовать GlobalSettings, если хотите, и их можно заполнять с помощью переменных окружения.
Это подразумевает, что единственное реальное решение заключается в том, использовать ли автоматическое обнаружение учетных данных или нет. По моему личному мнению, автоматическое обнаружение всегда очень подвержено ошибкам, поэтому я предпочел бы что-то явное.
То есть иметь SiteSetting, который каким-то образом указывает на реальные, конкретные учетные данные.