conforme este guia. Aqui, desenvolvo o Discourse, temas e plugins.
Também tenho um Discourse instalado em uma máquina virtual usando Docker, conforme este guia.
Essas instalações funcionam maravilhosamente.
Não entendo o que é Docker e por que os arquivos na máquina virtual são diferentes dos arquivos no computador local.
O que acontecerá se você parar o Docker na máquina virtual usando o comando d/shutdown_dev?
Como posso sincronizar essas duas instalações usando o Git?
Posso instalar o Docker em uma máquina local e para quê?
A presença ou não do Docker é praticamente irrelevante para o desenvolvimento da maioria dos componentes de plugins e temas. Isso é uma preocupação separada. Eu não executo uma instância do Docker em desenvolvimento.
Ao desenvolver complementos para o Discourse, você não deve se preocupar excessivamente com a versão exata ou a configuração da sua instância de desenvolvimento em comparação com a de produção, pois, na maioria dos casos, você não tem controle sobre a maioria das instâncias onde seu plugin acabará sendo usado, especialmente se for de código aberto. O mais importante é seguir boas práticas para tornar seu complemento mais robusto a mudanças no núcleo do Discourse. Mesmo que você esteja desenvolvendo apenas para sua própria instância do Discourse, você ainda não tem controle sobre as alterações no núcleo, então a mesma abordagem se aplica.
Versões ligeiramente diferentes geralmente NÃO devem fazer com que seu plugin ou componente de tema falhe. Pode acontecer, mas não é consistente. Meus plugins e componentes de tema podem ficar meses sem precisar de alterações, mesmo trabalhando em commits do núcleo com meses de diferença.
Normalmente, atualizo minha instância de desenvolvimento para a versão mais recente do master quando estou trabalhando em alterações de plugin (correções ou melhorias), para que eu possa resolver qualquer alteração que quebre funcionalidades. Isso é simplesmente feito com um git pull, bundle install e db:migrate.
As instâncias de produção devem ser atualizadas apenas através da interface gráfica ou pelo comando de rebuild na linha de comando.
Meu conselho é colocar um plugin disponível publicamente, atrair usuários e aprender com os desafios da experiência. Não procrastine demais: faça! E não se preocupe em cometer erros, pois eles ajudam você a aprender.
Eu faria essas perguntas no tópico de desenvolvimento do Docker. Por enquanto, eu não alteraria os scripts padrão usados para manter o ambiente de desenvolvimento do Docker, a menos que tenha um motivo muito bom; presumivelmente, eles estão aí para te ajudar.