Li threads como este e outros, e parece que, até hoje, não há uma maneira fácil de implantar uma imagem do Discourse em algo como ECS, GKE ou qualquer outra orquestração de contêineres que você prefira e fazê-la funcionar sem complicações…
Eu uso o Terraform para gerenciar um cluster do Elasticache, uma instância do RDS e um cluster do ECS. Só quero poder dizer: “Aqui está minha imagem do Discourse e aqui estão as variáveis de ambiente para conectar ao Postgres, Redis, SMTP, etc.”
Existe algo assim em 2020? Parece que, em todas as conversas anteriores sobre esse tópico, nenhuma solução satisfatória foi alcançada, e ainda estamos presos aos scripts personalizados do Discourse que desafiam as convenções de contêineres e quebram a compatibilidade com a maneira idiomática como as pessoas usam contêineres…
Essa é uma suposição incorreta. Todos esses são elementos do Discourse e precisam ser controlados pelo próprio Discourse dentro de seu contêiner para garantir uma configuração bem-sucedida.
Se você entrar em cenários complexos com múltiplos contêineres, isso só é necessário para grandes clientes com muitos recursos financeiros, e eu o encaminharia ao nosso serviço de hospedagem empresarial.
Por que isso exige esse script de bootstrap estranho que inicia contêineres e atua como um orquestrador?
Por que a imagem do Discourse não pode aceitar variáveis de ambiente e, em seu ponto de entrada, acessar todos esses recursos e criar as tabelas de que precisa, etc.? Outros serviços/aplicações web que dependem de camadas de persistência externas foram contêinerizados com sucesso dessa maneira. Basta colocá-los em um ECS, EKS ou outro serviço, informar onde encontrar o banco de dados, etc., e tudo funciona perfeitamente. Isso é possível com o Discourse?
É porque somos o oposto — uma organização sem fins lucrativos sem muito orçamento — que queremos manter tudo o mais barato possível, colocando todos os nossos aplicativos empresariais em um único host AWS ECS. Mas isso exige que os aplicativos individuais estejam bem contêinerizados e possam ser definidos como definições de tarefa ECS, ou seja, imagens Docker autocontidas.
Bem, de certo modo — considerando que o Discourse se encaixa facilmente em um VPS de $5/mês como uma imagem de instalação Docker única e direta, não tenho certeza de que economizar alguns centavos desse valor — com um aumento massivo na dificuldade de instalação e na complexidade de manutenção contínua — valha realmente a pena? Mantenha as coisas simples!
Como descrito no link acima, você pode criar contêineres e implantá-los com o Kubernetes. Já realizei implantações no GKE para alguns clientes que insistiram nisso porque estavam vinculados à plataforma.
Se o seu objetivo é economizar dinheiro, a opção de US$ 5 a US$ 10 por mês é o caminho a seguir.
Nossas ferramentas são otimizadas para o usuário mais comum, de longe: pequenos grupos sem equipe de TI especializada para gerenciar a orquestração de containers.
No entanto, as partes necessárias estão disponíveis caso vocês precisem ir para o “Full Cloud”. O repositório de origem para consultar é:
O arquivo samples/web_only.yml nele mostra como usar recursos externos.
O script launcher também é capaz de construir uma imagem Docker personalizada com o subcomando bootstrap.