Come ricompilare i plugin e NON ricompilare Discourse?

È possibile ricompilare il plugin senza ricompilare Discourse (ovvero senza aggiornarlo all’ultima versione)? Ho un problema: gli aggiornamenti di Discourse sono molto frequenti e spesso rendono i plugin non funzionanti. Vorrei ricompilare senza aggiornare Discourse. È possibile?

1 Mi Piace

Gentile @Ed_Bobkov,

Puoi realizzare l’“essenza” di ciò che desideri in un modo “non supportato” costruendo Discourse con (1) la tua immagine Docker base personalizzata e (2) una versione forkata del codice sorgente di Discourse su GitHub, se ritieni assolutamente necessario, eseguendo un fork del codice sorgente di Discourse.

In tal caso, dovrai:

Vedi questa riga nel file Dockerfile di Discourse:

git clone https://github.com/discourse/discourse.git &&\

e questa riga nello script launcher:

image="discourse/base:2.0.20200512-1735"

Se esegui un registro Docker privato, puoi caricare l’immagine base di Discourse (di tua scelta) nel tuo registro privato, ad esempio:

image="localhost:5000/base:2.0.20200512-1735"

Allo stesso modo, se forki Discourse, puoi utilizzare quel fork nel file Dockerfile (sopra), ad esempio:

git clone https://github.com/tuo_account_git/discourse.git &&\

Questo ti aiuterà a gestire sia l’immagine Docker base che il codice di build.

Naturalmente, questo non è raccomandato perché non beneficerai di tutte le correzioni di bug e gli aggiornamenti di sicurezza (e funzionalità) forniti da Discourse; inoltre, questo metodo non è supportato né raccomandato.

Spero che questo ti sia utile, @Ed_Bobkov

Nota: Con questo metodo, stai comunque ricompilando Discourse; ma hai il controllo su (1) la versione dell’immagine Docker base e (2) il codice del repository GitHub di Discourse; e sei “da solo” perché questo metodo non è supportato né raccomandato, per quanto ne so.

Vedi anche:

4 Mi Piace

Grazie per la risposta molto dettagliata! Non è una soluzione semplice. È strano che non esista un comando per ricompilare senza verificare l’aggiornamento di Discourse.

1 Mi Piace

Ciao @Ed_Bobkov

Beh, potrebbe benissimo esserci un “altro metodo” che non conosco :slight_smile: Su questo lascio la parola ad altri.

Ho lavorato a questo per molti giorni un po’ di tempo fa, e questa era la “migliore soluzione che sono riuscito a trovare” dopo molti tentativi ed errori.

Se esiste un modo più semplice, mi farebbe piacere sentirlo; ma ha senso se lavori spesso con Docker.

Per prima cosa, l’immagine deve essere costruita. Discourse parte da un’immagine base e la modifica. Quando aggiungi nuovi plugin in produzione (Docker), generalmente è necessario ricostruire il contenitore. Ecco perché ho risposto come ho fatto sopra.

Ci sono molte persone qui più esperte di me sull’amministrazione di sistema di Discourse, quindi forse qualcun altro ha un’idea migliore in linea con ciò che stai cercando.

Saluti!

4 Mi Piace

Se il tuo obiettivo è semplicemente aggiornare un plugin senza aggiornare la versione di Discourse, utilizza semplicemente la console di aggiornamento di Docker Manager accessibile dalla dashboard online e premi il pulsante di aggiornamento pertinente per il plugin specifico, ad esempio:

https://your-site/admin/upgrade

Avvertenza n. 1: Credo che questo funzioni solo con asset pubblici, ad esempio plugin open source. Per asset privati
accessi tramite chiavi di deployment incorporate nello script di build, potrebbe essere necessario ricostruire l’intero progetto.
Avvertenza n. 2: Molti aggiornamenti dei plugin vengono distribuiti per aggiungere compatibilità con l’ultima build di Discourse. Nella maggior parte dei casi ha senso aggiornare entrambi all’ultima versione, poiché alcuni aggiornamenti possono rompere la compatibilità con versioni precedenti di Discourse, ma dipende da cosa stai facendo.

11 Mi Piace