Como é possível recompilar o plugin e NÃO recompilar o Discourse (sem atualizar para a versão mais recente)? Tenho um problema em que o Discourse tem atualizações muito frequentes. Muitas vezes, as atualizações fazem com que os plugins parem de funcionar. Gostaria de recompilar sem atualizar o Discourse. É possível?
Prezado @Ed_Bobkov,
Você pode realizar a “essência” do que deseja de uma forma “não suportada” construindo o Discourse com (1) sua própria imagem base Docker do Discourse e (2) uma base de código do GitHub do Discourse bifurcada, se acreditar que isso é absolutamente necessário, executando uma versão bifurcada do código-fonte do Discourse.
Nesse caso, você precisará:
- Editar o Dockerfile e adicionar seu repositório fonte bifurcado do Discourse
- Editar o script de inicialização (launcher) e adicionar uma imagem base Docker alternativa
Veja esta linha no Dockerfile do Discourse:
git clone https://github.com/discourse/discourse.git &&\
e esta linha no script de inicialização:
image="discourse/base:2.0.20200512-1735"
Se você executar um registro Docker privado, poderá enviar a imagem base do Discourse (de sua escolha) para seu registro privado e, por exemplo:
image="localhost:5000/base:2.0.20200512-1735"
Da mesma forma, se você bifurcar o Discourse, poderá usar essa bifurcação no arquivo Dockerfile (acima), por exemplo:
git clone https://github.com/seu_conta_git/discourse.git &&\
Isso ajudará você a gerenciar tanto a imagem base Docker quanto o código de compilação.
Claro, isso não é recomendado, pois você não se beneficiará de todas as correções de bugs e atualizações de segurança (e recursos) do Discourse; e este método não é suportado nem recomendado.
Espero que isso ajude, @Ed_Bobkov
Nota: Neste método, você ainda está recompilando o Discourse; mas você está controlando (1) a versão da imagem base Docker e (2) o código do repositório do GitHub do Discourse; e está “por conta própria”, pois este método não é suportado nem recomendado, de forma alguma (pelo que sei).
Veja também:
Obrigado pela resposta muito detalhada! Não é uma solução simples. É estranho que não haja um comando para recompilar sem verificar a atualização do Discourse.
Olá @Ed_Bobkov
Bem, pode muito bem existir algum “outro método” que eu não conheça
Deixo isso para os outros.
Trabalhei nisso por vários dias, algum tempo atrás, e isso foi o “melhor que consegui chegar” após muitos “tentativas e erros”.
Se houver uma maneira mais fácil, adoraria ouvir sobre ela; mas faz sentido se você trabalha muito com Docker.
Primeiro, a imagem precisa ser construída. O Discourse começa com uma imagem base e a modifica. Quando você adiciona novos plugins em produção (Docker), geralmente é necessário reconstruir o container. Por isso, respondi como respondi acima.
Há muitas pessoas aqui mais inteligentes que eu no tópico de administração de sistemas do Discourse, então talvez alguém tenha uma ideia melhor no sentido do que você está procurando.
Abraços!
Se o seu objetivo é apenas atualizar um plugin sem atualizar a versão do Discourse, basta usar o console de atualização do Docker Manager, acessado pelo painel online, e clicar no botão de atualização relevante para o plugin específico, por exemplo:
https://your-site/admin/upgrade
Observação 1: Acredito que isso funcione apenas com recursos públicos, como plugins de código aberto. Para recursos privados acessados por chaves de implantação incorporadas no script de build, talvez seja necessário reconstruir todo o projeto.
Observação 2: Muitas atualizações de plugin são implantadas para adicionar compatibilidade com a versão mais recente do Discourse. Na maioria dos casos, faz sentido atualizar ambos para a versão mais recente, pois algumas atualizações podem quebrar a compatibilidade com versões mais antigas do Discourse, mas isso depende do que você está fazendo.
