Problemi nella comprensione dello sviluppo di Discourse

Ciao a tutti.
Ho installato Discourse sul mio computer locale su

http://localhost:4200/

secondo questa guida. Qui sto sviluppando Discourse, temi e plugin.
Ho anche un’installazione di Discourse su una macchina virtuale utilizzando Docker, seguendo questa guida.
Queste installazioni funzionano splendidamente.

Non capisco cosa sia Docker e perché i file sulla macchina virtuale siano diversi da quelli sul computer locale.

Cosa succederà se si arresta Docker sulla macchina virtuale con il comando d/shutdown_dev?

Come posso sincronizzare queste due installazioni utilizzando Git?

Posso installare Docker su una macchina locale e a cosa serve?

Aiutatemi a chiarire questi dubbi.

Provo a illustrare il flusso:

  1. Lavora sul tuo codice (all’interno di /discourse).
  2. Compila il tuo codice in un contenitore Docker.
  3. Distribuisci quel contenitore Docker sul tuo server di produzione.

Un caso d’uso per eseguire Docker localmente è testare il tuo nuovo contenitore Docker compilato prima di distribuirlo sul server di produzione.

1 Mi Piace

La presenza o meno di Docker è in gran parte irrilevante per lo sviluppo della maggior parte dei componenti di plugin e temi. Si tratta di una preoccupazione a parte. Io non eseguo un’istanza Docker in ambiente di sviluppo.

Quando sviluppi addon per Discourse, non dovresti preoccuparti eccessivamente della versione esatta o della configurazione della tua istanza di sviluppo rispetto a quella di produzione, perché in ogni caso, se il plugin è open source, non hai il controllo sulla maggior parte delle istanze su cui finirà per essere utilizzato. La cosa più importante è seguire le buone pratiche per rendere il tuo addon più robusto rispetto ai cambiamenti nel core di Discourse. Anche se stai sviluppando solo per la tua istanza Discourse, non hai comunque il controllo sui cambiamenti del core, quindi lo stesso approccio rimane valido.

Versioni leggermente diverse in genere NON dovrebbero causare il fallimento del tuo plugin o componente tema. Può accadere, ma non è coerente. I miei plugin e i TC (Theme Components) possono rimanere mesi senza necessità di modifiche, anche lavorando su commit del core distanti mesi l’uno dall’altro.

Normalmente, quando lavoro su modifiche ai plugin (correzioni o miglioramenti), aggiorno la mia istanza di sviluppo all’ultima versione di master, così da intercettare eventuali cambiamenti che rompono la compatibilità. Questo si ottiene semplicemente eseguendo un git pull, bundle install e db:migrate.

Le istanze di produzione dovrebbero essere aggiornate tramite l’interfaccia grafica o il comando rebuild da riga di comando.

Il mio consiglio è di pubblicare un plugin, attirare utenti e imparare dai problemi che incontrerai grazie all’esperienza. Non rimandare troppo: agisci! E non preoccuparti di commettere errori, perché ti aiutano a imparare.

6 Mi Piace

Grazie mille per la tua risposta.
Proverò a sviluppare.
Cioè, posso rimuovere “git clone /github…docker” dal file app.yaml?
E ricostruirlo?

Porrei fare domande di questo tipo nel argomento di sviluppo Docker. Per ora, non modificherei gli script predefiniti utilizzati per gestire lo sviluppo con Docker, a meno che tu non abbia un motivo molto valido; presumibilmente sono lì per aiutarti.

1 Mi Piace

Ti capisco. Grazie.

1 Mi Piace