Estou criando uma nova instância do Discourse do zero para fins de desenvolvimento e vejo este erro de bootstrap novamente:
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' falhou com retorno #<Process::Status: pid 1002 exit 1>
Localização da falha: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec falhou com os parâmetros {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap falhou com código de saída 1
A configuração do contêiner é com dois contêineres para webonly e dataonly (redis) e com um banco de dados postgresql externo. Comentar as configurações do maxmind não muda nada.
Hmmm, não, temos 4 GB de RAM e bastante espaço em disco (2 x 32 GB), o ambiente geral é o mesmo da outra máquina docker onde as compilações rodam sem problemas.
Status da MEM:
root@docker3a:/var/discourse# free -h total usado livre partilhado Buff/Cache disponível Memória: 3,8Gi 819Mi 1,4Gi 22Mi 1,9Gi 3,0Gi Swap: 974Mi 52Mi 922Mi
OK, corrigi a separação de web_only e redis. A mensagem de erro agora é
FAILED -------------------- Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate' falhou com retorno #<Process::Status: pid 981 exit 1> Localização da falha: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn' exec falhou com os parâmetros {\"cd\"=>\"$home\", \"tag\"=>\"migrate\", \"hook\"=>\"db_migrate\", \"cmd\"=>[\"su discourse -c 'bundle exec rake db:migra te'\"} bootstrap falhou com código de saída 1 ** FALHA AO INICIAR ** por favor, role para cima e procure por mensagens de erro anteriores, pode haver mais de uma. ./discourse-doctor pode ajudar a diagnosticar o problema. 801049b69a89d38b1ae5c299d356fc5f8dc6a8f518b1260c2dde05e0b6081556
Mas talvez seja um mal-entendido / falta de conhecimento da minha parte:
O banco de dados deve ser externo em outro contêiner lxc que possui um banco de dados postgresql. O usuário e o banco de dados existem, mas o banco de dados está vazio antes do primeiro bootstrap de web_only. O script cria o banco de dados em si no sistema remoto na primeira compilação? Ou eu tenho que primeiro criar o contêiner do banco de dados e depois exportar seu esquema padrão e os dados manualmente para o daemon postgresql externo?
Obrigado pelo diagrama. É uma configuração bastante sofisticada - você faria isso se tivesse um bom motivo e conhecesse o território.
Se você ainda estiver vendo o seguinte, acho que é a indicação do que está errado. O Redis não consegue abrir a porta em que precisa estar escutando.
Portanto, as perguntas são se o redis deveria estar fazendo isso, neste contêiner, e se sim, onde mais na máquina outro redis está em execução. lsof pode ser uma ferramenta útil aqui.
Olá @Ed_S
obrigado pela dica sobre a porta que faltava. Primeiro, quero aguardar a resposta de Falco sobre minhas perguntas sobre a configuração geral do discourse com um banco de dados postgres externo.
Sim, a configuração é um pouco sofisticada em comparação com o padrão com apenas um contêiner de aplicativo. Eu executo tudo em uma máquina root dedicada com Proxmox (https://p\u003eroxmox.com) como ambiente de virtualização em hetzner.de
Você ainda precisa compartilhar os logs completos, incluindo a parte em que a migração falhou. Minha suposição (e é uma suposição, já que você não compartilhou o erro) é que você está usando o plugin de IA e seu banco de dados não tem o complemento necessário.
Agora acho que a melhor abordagem seria criar uma configuração padrão “tudo em um” primeiro (app.yml). E então fazer um dump SQL do esquema inicial e dos dados do container para uma máquina postgres externa. @Falco o que você acha?