Discourse_docker: il bootstrap del launcher fallisce (workaround incluso)

L’avvio di una nuova immagine del contenitore fallisce. Qualche giorno fa funzionava, “non è cambiato nulla”, oggi fallisce. Log:

[0:02:27] Ancora in lavorazione:
[0:02:27]   v8
________ esecuzione di 'vpython third_party/depot_tools/update_depot_tools_toggle.py
--disable' in
'/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:
impossibile risolvere le opzioni: impossibile risolvere lo 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:
file o directory non trovati
Errore: Il comando 'vpython third_party/depot_tools/update_depot_tools_toggle.py
--disable' ha restituito uno stato di uscita non zero (1) in
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/libv8-8.4.255.0/vendor

...

** AVVIO FALLITO ** scorri verso l'alto e cerca i messaggi di errore precedenti; potrebbero essercene più di uno.
./discourse-doctor può aiutare a diagnosticare il problema.

Approfondendo: per libv8 esiste già un problema simile segnalato su GitHub, legato a un cambiamento di versione nel builder di Ruby. Durante l’avvio viene eseguita un’aggiornamento del builder. Credo che il problema sia legato alla versione 2.2.15 di bundler (rilasciata ieri). A essere onesti: non sono un esperto di Ruby, quindi forse il vero problema è leggermente diverso.

Tuttavia, il seguente workaround ha funzionato per me: modifica la riga 148 in templates/web.template.yml da
- gem update bundler
a
- gem install bundler -v 2.2.14

Cordiali saluti,

Michael

Era quando provavi a compilare sul ramo stabile?

Ottimo punto! Il ramo master di discourse_docker, parametri: version: stable in app.yml

A meno che tu non abbia una ragione per eseguire stable e non sia disposto a prestare maggiore attenzione ad alcuni aspetti (come questo problema), ti converrà utilizzare tests-passed: è molto più testato ed è quello che Discourse utilizza per il proprio hosting.

Questo merita sicuramente di essere debuggato; se bundler ha appena rilasciato un bug, vogliamo mettere in atto una soluzione temporanea il prima possibile.

@kris.kotlarek puoi riprodurre il problema su Digital Ocean?

Ci sono diverse questioni in gioco qui. Per ora, la soluzione più agevole è aggiornare la versione del Gemfile nella versione stabile. Consulta il messaggio di commit per ulteriori dettagli:

@m.abi, per favore riprova a ricostruire: ora dovrebbe funzionare.

Mi aspetto che chi utilizza la versione stable ottenga più, beh, stabilità — idealmente solo aggiornamenti di sicurezza e nient’altro. Almeno, questa è la nostra interpretazione del ramo stable. E non è che si debba prestare più attenzione alla versione stable perché potrebbe rompersi più spesso rispetto alla versione all’avanguardia.

Beh, come mostra questo caso, la situazione è un po’ diversa da quanto ci si potrebbe aspettare. Fanno un buon lavoro nel risolvere i problemi rapidamente (come in questo caso), ma (per lo più?) non usano stable sulla loro piattaforma di hosting, quindi è meno testata rispetto a tests-passed. Quindi, tranne proprio al momento di un nuovo rilascio di stable, considero tests-passed una scommessa un po’ “più sicura”. Non tutti sono d’accordo.

@david La build funziona! Grazie!