Olá Jay @pfaffman, obrigado por este post e por outros sobre este tópico de “dois contêineres”, incluindo os escritos de Sam sobre o assunto.
Pergunta:
Temos tentado configurar dois contêineres como você menciona: um contêiner para data e outro para web-only, e temos enfrentado vários obstáculos ao tentar fazê-lo funcionar no macOS.
Mas, antes de nos preocuparmos em depurar essa “configuração de dois contêineres” no macOS ou no Ubuntu, gostaríamos de ter certeza de que estamos fazendo isso pelo motivo certo.
O motivo pelo qual queremos fazer essa “dança dos dois contêineres” é para que o site não fique fora do ar quando reconstruímos o aplicativo web, por exemplo, ao instalar um plugin. Além disso, quando ajustamos um plugin desenvolvido internamente; notamos que, às vezes, a única maneira de garantir que nossas alterações funcionem é reconstruir (essa é uma história para outro dia). Também tenho tido dificuldades para configurar um ambiente de desenvolvimento web “rápido e amigável” à minha satisfação; mas isso é outro tópico para outro dia.
Então, minha pergunta é: a configuração de “dois contêineres” minimiza significativamente o tempo de inatividade quando a parte “web-only” do aplicativo é reconstruída?
Essa é a maneira correta de pensar sobre isso, não é mesmo?
Quando instalamos um plugin ou fazemos um ajuste nele, precisamos reconstruir apenas o arquivo yml “web-only” e não o yml de dados?
Vindos de um ambiente LAMP, as alterações em plugins podem e são feitas principalmente em tempo de execução no site ao vivo (sem tempo de inatividade, a menos que cometamos algum erro). Também viemos de algumas aplicações web VueJS onde construímos no desktop e, em seguida, apenas fazemos o upload e colocamos a nova aplicação no lugar, havendo praticamente nenhum tempo de inatividade durante a atualização/atualização da parte VueJS do site. No entanto, com o Discourse, temos tempo de inatividade, o que não queremos (nem mesmo alguns segundos).
A solução de “dois contêineres” mostra melhorias significativas no tempo de inatividade quando (1) reconstruímos o aplicativo (para plugins, ajustes de código, etc.) ou (2) restauramos a partir de um backup completo?
Sinto que vou ser “criticado” (novamente) por fazer essa pergunta, pois estamos procurando uma maneira de executar o Discourse em produção e fazer alterações com tempo de inatividade quase zero, e ainda não encontramos uma maneira de fazer coisas que são tão fáceis de fazer com uma aplicação LAMP ou VueJS (por exemplo).
Daí a luta / interesse no método de “dois contêineres”, que ainda não conseguimos colocar em funcionamento.
Obrigado!