File dell'applicazione dopo la configurazione di Digital Ocean

Abbiamo installato con successo Discourse su Digital Ocean; tutto funziona bene, ma non riusciamo proprio a trovare dove si trovano effettivamente i file di Discourse. Volevamo provare alcune modifiche e creare alcuni plugin, ma non troviamo alcun file. Abbiamo utilizzato FileZilla per accedere al sito, ma non riusciamo a individuare i file dell’applicazione Discourse, ad esempio discourse/app. Siamo entrati nella cartella var/discourse e non c’era nulla. Poi in var/discourse/containers e ancora nulla. Abbiamo eseguito SSH, lanciato .launcher, siamo entrati in app e nel terminale vediamo che i nostri file si trovano in var/www, ma questa directory non esiste quando accediamo al server. Abbiamo provato var/lib/docker/containers senza successo. Dove si trovano esattamente i file di Discourse? Grazie.

Così funziona Docker: i file effettivi si trovano all’interno di un contenitore Docker e sono quindi “invisibili” tramite FileZilla.

Se desideri testare modifiche a Discourse, come plugin e temi, non potrai farlo in un’installazione di produzione.

Per i temi, consulta Beginner's guide to using Discourse Themes

Per i plugin, consulta Developing Discourse Plugins - Part 1 - Create a basic plugin

Esiste un altro modo per installarlo oltre all’uso di Docker? Ho letto tutte le guide, ma è piuttosto difficile sviluppare con file invisibili.

Il paradigma è molto diverso dalle applicazioni PHP degli anni '90, in cui era normale modificare i file sui server di produzione utilizzando FTP.

Le modifiche al comportamento di Discourse dovrebbero essere progetti separati, ospitati in un proprio repository git, e dovrebbero sfruttare le API esistenti per plugin e temi.

Quindi, supponiamo che tu voglia aggiungere un campo extra al compositore dei topic in cui l’utente possa specificare il proprio colore preferito. Dovrai creare un nuovo plugin per Discourse seguendo Developing Discourse Plugins - Part 1 - Create a basic plugin, quindi caricarlo su GitHub in un repository chiamato discourse-favorite-color e installarlo nella tua istanza seguendo Install plugins on a self-hosted site

OK, capito. Dovrò abituarti a questo nuovo modo di sviluppare. Sono solo curioso: ogni volta che aggiungiamo un plugin dobbiamo eseguire ./launcher rebuild app? E poi rifarlo ogni volta che modifichiamo il plugin?

Sì.

Tuttavia, ciò dovrebbe accadere di rado, poiché si tratta della tua installazione di produzione.

Per scopi di sviluppo e test, la prima parte di Developing Discourse Plugins - Part 1 - Create a basic plugin ti indica come configurare un “ambiente di sviluppo” dove puoi apportare modifiche e testare semplicemente aggiornando il browser.

È quello che faccio io, anche se puoi eseguire un aggiornamento tramite l’interfaccia web in /admin/upgrade.

Inoltre, un’installazione con 2 container ti permette di aggiornare in questo modo:

./launcher bootstrap web_only
./launcher destroy web_only; ./launcher start web_only

così il tuo sito è offline solo per il tempo necessario al nuovo server per avviarsi (circa un minuto).