Aqui está um caso que não consigo resolver, mesmo após muitas instalações e migrações impecáveis do Discourse.
Contexto:
Tínhamos o Discourse funcionando bem em um container Docker e estávamos trabalhando em algumas nuances do banco de dados PostgreSQL.
O problema ocorreu quando não ficamos satisfeitos com os resultados da recriação de posts brutos, e, portanto, nada funcionava como planejado. Decidimos então descartar o banco de dados PostgreSQL e recriá-lo; mas o aplicativo continuava apresentando vários erros de permissão, etc.
Então, decidimos “ir ao extremo” e resolvemos destruir tudo no estilo “e daí?”; entramos no PostgreSQL (sabendo que isso não daria certo, mas querendo tentar) e excluímos todos os tópicos e posts do banco de dados (DELETE FROM topics; DELETE FROM posts;). Isso meio que funcionou; mas não ficamos satisfeitos com os resultados (experimento encerrado), então decidimos reconstruir o Discourse do zero, movendo o antigo /var/discourse para um local seguro e puxando do git para um novo começo.
O Problema
Quando construímos totalmente novo a partir de um git pull, a construção funcionou bem até o momento em que acessamos o site para criar o login de administrador.
Quando fomos ao login de administrador de uma nova instalação, era o site antigo que havíamos destruído! Isso foi uma surpresa.
Então, decidimos entrar nesse novo aplicativo e tentar excluir todas as tabelas do Discourse do banco de dados, o que fizemos; mas, surpresa: ao reconstruir o aplicativo novamente, não era um site novo, mas sim o mesmo site quebrado mencionado acima.
Então, excluímos todos os diretórios /var/*discourse*; removemos todas as imagens do Docker, achando que isso deixaria tudo totalmente limpo, e começamos de novo, puxando do git para /var/discourse e construindo do que pensávamos ser totalmente do zero; mas, surpresa… o site antigo ainda está lá.
Pensando: “como isso é possível”…??
Executamos ps aux | grep postgres fora do container Docker e notamos que o PostgreSQL existia fora do container (o que foi uma surpresa, pois erroneamente pensávamos que a instalação do Discourse via Docker fosse totalmente dentro do container); e então tentamos encontrar onde fazer a limpeza, mas sem sucesso.
Pesquisamos até os links do Google ficarem roxos, tentamos de tudo… mas não conseguimos uma instalação limpa do Discourse.
Pensando que estávamos perdendo algo, configuramos um novo servidor, nunca com o Discourse instalado, instalamos o Discourse do zero e funcionou perfeitamente, como de costume (outro servidor).
A Pergunta
Minha pergunta é, acho que… quando uma instalação sai completamente dos trilhos (de um jeito ou de outro), como fazemos para levar o servidor, incluindo o PostgreSQL, de volta ao zero absoluto, para que esse problema desapareça e possamos iniciar uma instalação completamente nova?
Desculpe pela postagem tão longa, quando talvez apenas A Pergunta fosse suficiente para obter ajuda.
Obrigado.