Estou tentando implementar os contêineres separados, mas com um banco de dados remoto. Segui as instruções acima e o howto para configurar um banco de dados PostgreSQL remoto. A configuração funciona, mas estou me perguntando por que há duas referências idênticas (em web_only e data) ao mesmo banco de dados. Isso me faz acreditar que estou fazendo algo errado e que o contêiner web_only nem está usando o contêiner data.
env:
# certifique-se de que o locale exista no contêiner; talvez seja necessário instalá-lo
LANG: en_US.UTF-8
DISCOURSE_DB_USERNAME: REMOVE
DISCOURSE_DB_PASSWORD: REMOVE
DISCOURSE_DB_HOST: REMOVE.ondigitalocean.com
DISCOURSE_DB_NAME: REMOVE
DISCOURSE_DB_PORT: 25060
DISCOURSE_DB_BACKUP_PORT: 25060
Se você estiver usando um banco de dados remoto, não precisará criar o contêiner de dados que contém o banco de dados. Observe que você precisará tanto do PostgreSQL quanto do Redis (então, talvez precise do contêiner de dados para isso).
Não sei exatamente o que você entende por ‘dois containers’, mas se você assume que dois containers significam duas instâncias separadas do Discourse, então você está seguindo a direção errada.
Este artigo ajuda a configurar um container de aplicação e um de banco de dados separados, o que é útil para usuários avançados que buscam mais flexibilidade.
Se você deseja instalar/hospedar dois sites do Discourse na mesma máquina, talvez valha a pena conferir o Multisite do Discourse: Multisite configuration with Docker
Então, qual container estava em execução? Supondo que fosse o app, não, você está executando uma versão antiga do discourse-setup.
Faça um git pull antes de continuar para garantir que você está usando a versão mais recente do discourse-setup.
Se você tiver um container de dados ou web-only em execução, deve verificar o que impediu o outro de iniciar. Geralmente, o container web-only falha ao iniciar porque já há um processo (servidor web) em execução na porta 80/443.
Se você apenas quiser executar um segundo contêiner independente, terá que modificar os arquivos yml para usar diretório e porta diferentes. Possivelmente também desabilitar o letsencrypt.
Só para sua informação, se você quiser fazer um teste de desempenho, não deve fazê-lo em uma máquina de produção. Em vez disso, crie um VPS separado e use-o para os testes.
Tentar executar duas instâncias separadas do Discourse na mesma máquina pode resultar em uma instalação muito problemática, e isso não é ideal.
Esse comando criará contêineres de dados e web separados se e somente se não houver um arquivo app.yml no momento da execução. Ele não criará dois contêineres web.
Acho que deveria ter deixado esse recurso sem documentação. E, na verdade, não ajuda migrar para uma configuração de dois contêineres, então provavelmente não pertence aqui de forma alguma.
Talvez sim. É uma grande ajuda e, assim como o discourse-setup, serve a um propósito muito específico: uma nova instalação totalmente padrão. Meus scripts de instalação o utilizam há bastante tempo. Pode ser uma maneira fácil de migrar para dois containers, desde que você esteja disposto a fazer um backup do container antigo e restaurá-lo no novo.
Minha preocupação sempre foi que seria difícil dar suporte, pois pessoas que não o entendem tentarão usá-lo e, em seguida, não conseguirão utilizar nenhuma documentação, já que o “rebuild app” não funcionará mais. Além disso, saber quando é necessário reconstruir o container do banco de dados também é difícil. Recentemente, uma reconstrução falhou porque o Redis 3.0 foi utilizado, mas agora o 4.0 é obrigatório. O PostgreSQL também precisou ser atualizado, o que exigiu seguir uma sequência de etapas, mas era necessário saber quando reconstruir o container de dados e quando reconstruir o container web, além de como alterar o caminho do recomendado. Tudo correu sem problemas para mim, mas tentar comunicar isso a alguém que não sabe o que é bash em um fórum seria frustrante para todos os envolvidos.
Acho que pode ser melhor manter a barreira para criar uma instalação não padrão bastante alta, para proteger as pessoas de si mesmas.