Com certeza, estou perdendo algumas células cerebrais!
Fizemos algumas edições no contêiner do aplicativo em um dos arquivos do diretório /var/www/discourse/app/views/layouts.
Depois, pensamos (como idiotas) que poderíamos apenas reconstruir o contêiner com /var/discourse/launcher rebuild app (não!), mas toda vez que fazemos isso, nossas edições são sobrescritas.
Não queremos fazer um fork do Discourse; mas gostaríamos de reconstruir o aplicativo usando o launcher sem que ele sobrescreva nossas edições locais.
Parece que descobrimos por que tudo o que tentamos resultou na sobrescrita de nossos arquivos no aplicativo durante o processo de reconstrução:
O motivo parece ser que o launcher puxa a imagem base do Discourse e essa imagem possui um diretório .git e o arquivo de configuração do git aponta naturalmente para o repositório principal do Discourse, sobrescrevendo então nossas alterações:
launcher
pull_image() {
# Adiciona uma única nova tentativa para contornar erros TLS do Docker Hub
$docker_path pull $image || $docker_path pull $image
}
Antes, equivocadamente, pensávamos que o launcher construía a imagem (como não percebemos isso?!) e agora está claro que ele puxa uma imagem base do Docker Hub.
De volta à prancheta!
Existe alguma flag que possamos definir para impedir que o launcher puxe a imagem base e, em vez disso, a construa?
Concordo totalmente com você: plugins e componentes de tema são o caminho a seguir! Esse método é totalmente suportado e ajuda a manter a sincronia com a equipe de desenvolvimento do Meta.
Também é bom ser curioso, explorar possibilidades e alcançar um nível mais profundo de compreensão do Discourse. Após ler este tópico ontem, criei um registro Docker local, marquei a imagem base do Discourse localmente, enviei essa imagem para meu novo registro Docker (localhost) e, em seguida, recriei um aplicativo Discourse puxando a imagem base do registro do Discourse.
É divertido, na minha opinião, experimentar e aprender mais sobre o Discourse, e aprendi muito com essa exploração/experimento de administração de sistemas. Claro, não é assim que rodaríamos uma aplicação em produção, mas aprendi bastante ao passar pelos passos necessários para puxar a imagem base do Discourse do localhost em vez de remotamente, e foi surpreendentemente fácil fazer isso. Por isso, escrevi sobre esse experimento para compartilhar com outros administradores de sistemas curiosos:
Espero que outros exploradores da área de administração de sistemas se beneficiem desse experimento de alguma forma, mesmo que pequena.
Há uma maneira super simples de implementar isso sem se preocupar com imagens ou criar um plugin. Desde que você esteja apenas modificando arquivos planos existentes, pode alterá-los a partir do app.yml.
Procure por hooks e pups. Vários outros guias já utilizam essa abordagem.
Mesmo após experimentar o registro Docker local e a imagem base local do Discourse, não consegui obter resultados consistentes (não sei ao certo o motivo, deve estar faltando algum detalhe crucial na configuração).
Por outro lado, aprendi mais sobre registros Docker locais e como construir e gerenciá-los.
Apenas um experimento lateral com o Docker… com certeza aprendi muito!