Tenho visto algumas migrações de configurações recentemente (a mais recente sendo a remoção de automatic_backups_enabled) onde a migração usa apenas valores do banco de dados para calcular um novo valor. Isso ignora quaisquer configurações feitas em discourse.conf via app.yml.
Código:
INSERT INTO site_settings (name, data_type, value, created_at, updated_at)
SELECT 'backup_frequency', 3, NULL, 'NOW()', 'NOW()'
WHERE EXISTS (
SELECT 1
FROM site_settings
WHERE name = 'automatic_backups_enabled'
AND VALUE = 'f'
LIMIT 1
)
ON CONFLICT (name) DO UPDATE SET value = NULL, updated_at = 'NOW()';
que ignora automatic_backups_enabled = false em discourse.conf e, como resultado, não mantém os backups desativados quando essa configuração está presente.
Este navio específico já partiu, mas pode ser bom ter em mente que esse padrão causa problemas com configurações que são substituídas globalmente.
Sim, GlobalSetting é carregado durante as migrações
Eu também não acho que você queira confiar em uma variável de ambiente em tempo de compilação? Isso torna difícil separar a etapa da variável de ambiente para discourse.conf e a implantação real do contêiner. Em meu outro mundo (PHP/Laravel), isso é visto como um anti-padrão.