Conseguimos instalar o Discourse no Digital Ocean e tudo funciona bem, mas não conseguimos, por mais que tentemos, descobrir onde estão os arquivos reais do Discourse. Queríamos testar algumas modificações e criar alguns plugins, mas não encontramos nenhum arquivo. Usamos o FileZilla para fazer login no site. No entanto, não conseguimos localizar nenhum dos arquivos de aplicação do Discourse em lugar algum, por exemplo, discourse/app. Entramos na pasta var/discourse e não encontramos nada. Depois, var/discourse/containers e também nada. Fizemos SSH .launcher enter app e conseguimos ver que nossos arquivos no terminal estão localizados em var/www, mas esse diretório não existe quando fazemos login no servidor. Tentamos var/lib/docker/containers e também não encontramos nada. Onde exatamente estão localizados os arquivos do Discourse? Obrigado.
É assim que o Docker funciona: os arquivos reais estão dentro de um contêiner Docker e, portanto, ficam “invisíveis” ao usar o FileZilla.
Se você quiser testar modificações no Discourse, como plugins e temas, não será possível fazer isso em uma instalação de produção.
Para temas, consulte Beginner's guide to using Discourse Themes
Para plugins, consulte Developing Discourse Plugins - Part 1 - Create a basic plugin
Existe outra maneira de instalar isso além de usar o Docker? Li todos os guias, mas é um pouco difícil desenvolver com arquivos invisíveis.
O paradigma é muito diferente das aplicações PHP dos anos 90, onde era normal editar arquivos em servidores de produção usando FTP.
As alterações no comportamento do Discourse devem ser projetos separados, hospedados em um repositório git próprio, e devem utilizar as APIs de plugins e temas existentes.
Então, digamos que você queira adicionar um campo extra ao compositor de tópicos, onde o usuário poderá inserir sua cor preferida. Você criará um novo plugin do Discourse seguindo Developing Discourse Plugins - Part 1 - Create a basic plugin, depois o colocará no GitHub em um repositório chamado discourse-favorite-color e o instalará em sua instância usando Install plugins on a self-hosted site
Ok, entendi. Vou ter que me acostumar com essa nova forma de desenvolver. Só por curiosidade, toda vez que adicionamos um plugin, precisamos rodar ./launcher rebuild app? E depois fazer isso novamente ao modificar o plugin?
Sim.
No entanto, isso deve ocorrer com pouca frequência, pois se trata da sua instalação de produção.
Para fins de desenvolvimento e teste, a primeira parte de Developing Discourse Plugins - Part 1 - Create a basic plugin orienta a configurar um “Ambiente de Desenvolvimento”, onde você pode fazer alterações e testá-las apenas atualizando o navegador.
É isso que eu faço, embora você também possa fazer uma atualização pela interface web em /admin/upgrade.
Além disso, uma instalação com 2 containers permite fazer a atualização assim:
./launcher bootstrap web_only
./launcher destroy web_only; ./launcher start web_only
Assim, seu site fica fora do ar apenas pelo tempo que leva para o novo servidor iniciar (cerca de um minuto).