Non riesco ad aggiornare Ruby, quindi ./launcher rebuild app continua a fallire

Ciao,

Ho recentemente migrato un’immagine del server su cui è installato Docker Discourse.

Riesco a far funzionare tutto, ma devo rinnovare il certificato SSL.

Dato che il vecchio server aveva SSL configurato, sto seguendo il suggerimento di questa guida ed eseguendo
./launcher rebuild app

Questo fa sì che Docker scarichi e aggiorni un sacco di cose. L’immagine corrente è Discourse 2.6.0.beta3 - https://github.com/discourse/discourse version 29f7e0689f61c5d85960a88f741ac3abced12d3e

La prima volta che l’ho eseguito, mi ha dato il messaggio di aggiornamento di Postgres, quindi ho eseguito nuovamente ./launcher rebuild app come indicato.

Ora continua a fallire ogni volta, credo a causa di questo errore con una versione insufficiente di ruby installata.

ERRORE:  Errore durante l'installazione di bundler:
	bundler-2.5.3 richiede la versione di Ruby >= 3.0.0. La versione corrente di ruby è 2.7.2.137.

Ecco l’output completo

FALLITO

--------------------

Pups::ExecError: cd /var/www/discourse && gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,""); print $0 }' Gemfile.lock) failed with return #<Process::Status: pid 304 exit 1>

Posizione del fallimento: /pups/lib/pups/exec_command.rb:112:in `spawn'

exec failed with the params {"cd"=>"$home", "hook"=>"web", "cmd"=>["gem install bundler --conservative -v $(awk '/BUNDLED WITH/ { getline; gsub(/ /,\\\"\\\"); print $0 }' Gemfile.lock)", "find $home ! -user discourse -exec chown discourse {} \\+"]}

2ad07f29ace1b5396d9944fc4fc5a1ec712727280e8bb3df760367d08bfe6a25

** FALLITO IL BOOTSTRAP ** si prega di scorrere verso l'alto e cercare messaggi di errore precedenti, potrebbero essercene più di uno.

Pensavo che Docker aggiornasse la versione di Ruby secondo necessità?

Ho provato ad accedere manualmente al container e installare RVM, e ho attivato Ruby v3+ ma continuo a ricevere lo stesso errore.

Sono un po’ perso a questo punto, e mi chiedo se la versione installata sia semplicemente troppo vecchia per essere aggiornata con ./launcher?

Qualsiasi consiglio sarebbe molto apprezzato!

Solo una nota, quello non è l’errore, gli errori effettivi saranno più in alto.

2 Mi Piace

Consiglio di iniziare con una nuova immagine ed eseguire un’installazione standard.

1 Mi Piace

Grazie Jay, temevo che potesse essere l’unica strada da percorrere

Suppongo che dovrò solo trovare un modo e sperare di poter copiare il database in modo che non tutto vada perso

Prova ad aggiornare tutti i tuoi pacchetti usando apt upgrade

Non è difficile. Puoi semplicemente fare un backup, o fare Spostare un sito Discourse su un altro VPS con rsync. Non hai nulla da perdere dato che il tuo sito esistente rimane intatto. È il modo più sicuro possibile per procedere.

1 Mi Piace

Ho aggiornato assolutamente tutto ciò che potevo, inclusa la versione Ubuntu del server e ho confermato che sto eseguendo ruby v3.1.

Il problema è che sospetto sia la versione di ruby necessaria nel container, controllata da docker, e non riesco ad aggiornarla.

Sono riuscito a installare una versione pulita e a metterla in funzione 3.3.0.beta3-dev

Tuttavia, quando ho ripristinato il backup dal vecchio sito, non sembra essere stato ripristinato correttamente e ora la pagina di accesso non funziona. Guardando la console JS c’è un errore Discourse is not defined ogni volta che clicco sui pulsanti di accesso/registrazione. Suppongo che a causa della grande differenza di versioni non sia un semplice ripristino di un backup 2.6.0 su un’installazione pulita 3.3.0

Spostare tutto su un nuovo server non sta funzionando per me, poiché non riesco a eseguire ./launcher rebuild app senza che questo errore ruby mi blocchi ogni volta.

Se stai eseguendo un aggiornamento così importante, è molto probabile che i tuoi temi siano danneggiati. Prova la modalità provvisoria.

3 Mi Piace

Tecnicamente non esiste ancora una versione 3.3.0, stiamo ancora passando attraverso le beta.

1 Mi Piace

Grazie per le informazioni, sfortunatamente quando provo ad accedere a /safe-mode vengo reindirizzato nuovamente all’URL /login.

Penso che proverò a reinstallare e ricominciare da capo.

Ho usato l’immagine ufficiale di discourse ma immagino che installi solo l’ultima versione, indipendentemente dal fatto che sia una beta. Oppure c’è un modo per specificare una versione stabile o specifica?

Sì, puoi. Modifica app.yml su una nuova installazione prima di creare discourse (poiché non puoi eseguire il downgrade). Scegli il tag da GitHub. Ho dovuto farlo tempo fa quando ho dovuto ripristinare una vecchia versione prima di aggiornare all’ultima.

Ora creo un’immagine della versione funzionante prima di aggiornare, nel caso qualcosa vada storto.

Grazie, apprezzo l’aiuto!

La buona notizia è che sono riuscito a capire come installare una versione precedente di discourse_docker e la stessa versione di discourse modificando il file app.yml

La cattiva notizia è che ho riscontrato un altro errore verso la fine dell’installazione

--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile' è fallito con ritorno #<Process::Status: pid 14351 exit 1>
Posizione del fallimento: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec è fallito con i parametri {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}

Dovrò approfondire un po’ di più, sembra essere più correlato a ruby/rails all’interno del container.

Prova https://forum.example.com/login?safe_mode=no_themes%2Cno_plugins

2 Mi Piace