Discourse_docker: falha na inicialização do launcher (com solução alternativa)

A inicialização de uma nova imagem de contêiner falhou. Alguns dias atrás funcionava, “nada mudou”, mas hoje falha. Log:

[0:02:27] Ainda trabalhando em:
[0:02:27]   v8
________ executando 'vpython third_party/depot_tools/update_depot_tools_toggle.py
--disable' em
'/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/libv8-8.4.255.0/vendor'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/libv8-8.4.255.0/vendor/depot_tools/.cipd_bin/.cipd/pkgs/0/fI6WggdkRyN1r91MnTeApc2_gyTtXfYpueHZVLcaF8gC/vpython:
não foi possível resolver as opções: falha ao resolver o script Python: stat
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/libv8-8.4.255.0/vendor/third_party/depot_tools/update_depot_tools_toggle.py:
arquivo ou diretório não encontrado
Erro: O comando 'vpython third_party/depot_tools/update_depot_tools_toggle.py
--disable' retornou um status de saída diferente de zero (1) em
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/libv8-8.4.255.0/vendor

...

** FALHA NA INICIALIZAÇÃO ** Por favor, role para cima e procure mensagens de erro anteriores; pode haver mais de uma.
./discourse-doctor pode ajudar a diagnosticar o problema.

Investigando o problema: Para o libv8, já existe um problema semelhante relatado no GitHub, relacionado a uma mudança de versão no construtor Ruby. Durante a inicialização, uma atualização do construtor é realizada. Acredito que o problema pareça estar relacionado à versão 2.2.15 do bundler (lançada ontem). Para ser honesto: não sou especialista em Ruby, então talvez o problema real seja ligeiramente diferente.

No entanto, a seguinte solução alternativa funcionou para mim: Altere a linha 148 em templates/web.template.yml de
- gem update bundler
para
- gem install bundler -v 2.2.14

Atenciosamente,

Michael

Isso foi ao tentar compilar na branch estável?

Ótimo ponto! A branch master do discourse_docker, parâmetros: version: stable no app.yml

A menos que você tenha um motivo para usar stable e esteja disposto a prestar mais atenção a alguns detalhes (como este problema), você estará melhor com tests-passed, que é muito mais testado e é o que o Discourse usa para sua hospedagem.

Isso certamente vale a pena depurar. Se o bundler acabou de lançar um bug, precisamos de uma solução alternativa rapidamente.

@kris.kotlarek, você consegue reproduzir o problema no Digital Ocean?

Há várias questões em jogo aqui. Por enquanto, a solução mais suave é atualizar a versão do Gemfile na branch stable. Veja a mensagem do commit para mais detalhes:

@m.abi, por favor, tente reconstruir novamente — deve funcionar agora.

Espero que quem use a versão stable tenha, bem, mais estabilidade — idealmente apenas correções de segurança e pouco mais. Pelo menos, essa é a nossa interpretação da branch stable. E não é que seja necessário prestar mais atenção na versão stable porque ela possa quebrar com mais frequência do que a versão de ponta (bleeding edge).

Bem, como este caso mostra, a situação é um pouco menos assim do que você poderia esperar. Eles fazem um bom trabalho ao corrigir as coisas rapidamente (como neste caso), mas eles (principalmente?) não hospedam a versão stable em seu próprio servidor, então ela é um pouco menos testada do que a tests-passed. Portanto, exceto logo após o lançamento de uma nova versão stable, considero a tests-passed uma opção um pouco “mais segura”. Nem todos concordam.

@david A compilação funcionou! Obrigado!