Isso pode parecer detalhismo, mas acho que há algumas nuances importantes aqui.
As opções que você fornece são uma mistura de COMO as configurações estão sendo passadas e QUAIS configurações estão sendo passadas.
Com relação a COMO as configurações estão sendo passadas, duas coisas se aplicam:
-
a forma como as variáveis de ambiente estão sendo usadas atualmente
As variáveis de ambienteDISCOURSE_WHATEVERsão atualmente usadas durante o processo de build do Docker para criar entradas emdiscourse.confque estão disponíveis comoGlobalSettingouSiteSettingde dentro do Discourse. O Discourse não percebe essas variáveis de ambiente como tal. -
as limitações das entradas de discourse.conf
Embora as GlobalSettings tenham o recurso interessante de poderem suprimir e substituir as SiteSettings, elas também impõem a limitação de que em ambientes multisite elas se aplicam a todos os sites no multisite.
Esses dois combinados significam que, de dentro do Discourse, SiteSetting é o mais flexível. Elas podem ser SiteSettings reais, podem vir de discourse.conf e essas entradas podem vir de variáveis de ambiente DISCOURSE_. Na minha opinião, não há escolha real aí, SiteSetting é o mais flexível e não tem desvantagens, pois são um superconjunto funcional. Você pode usar GlobalSettings em vez disso e elas podem ser preenchidas usando variáveis de ambiente.
Isso implica que a única escolha real é se deve usar a descoberta automática de credenciais ou não. Na minha percepção pessoal, a descoberta automática é sempre muito propensa a erros, então eu preferiria ter algo explícito.
Ou seja, ter uma SiteSetting que de alguma forma aponte para credenciais reais e concretas.