Come faccio a apportare modifiche a app/views/layouts/?

Una domanda semplice e veloce:

Sicuramente mi mancano alcune cellule cerebrali!

Abbiamo apportato alcune modifiche nel contenitore dell’app in uno dei file della directory /var/www/discourse/app/views/layouts.

Poi, come dei veri sciocchi, abbiamo pensato di poter semplicemente ricostruire il contenitore con /var/discourse/launcher rebuild app (ma non è così!), ma ogni volta che lo facciamo, le nostre modifiche vengono sovrascritte.

Non vogliamo fare un fork di Discourse; ma vorremmo ricostruire l’app usando launcher senza che questo sovrascriva le nostre modifiche locali.

Qualcuno può dirci come fare?

Grazie!

Sembra che abbiamo individuato il motivo per cui qualsiasi tentativo abbia portato alla sovrascrittura dei nostri file nell’app durante il processo di ricostruzione:

Il problema sembra essere dovuto al fatto che launcher scarica l’immagine base di Discourse, la quale contiene una directory .git e il file di configurazione git punta naturalmente al repository principale di Discourse, sovrascrivendo così le nostre modifiche:

launcher

pull_image() {
  # Aggiunge un singolo tentativo per risolvere gli errori TLS di Docker Hub
  $docker_path pull $image || $docker_path pull $image
}

In precedenza pensavamo erroneamente che launcher costruisse l’immagine (come abbiamo potuto non accorgercene?!), ma ora è chiaro che scarica un’immagine base da Docker Hub.

Bisogna ricominciare da capo!

Esiste un flag che possiamo impostare per impedire a launcher di scaricare l’immagine base e costringerlo invece a costruirne una?

Ciao @DBHacker

Sembra che quello che potresti voler fare sia:

  1. apportare modifiche al contenitore di base (come hai menzionato)
  2. etichettare e salvare quell’immagine e
  3. caricare quell’immagine nel tuo repository di immagini Docker
  4. modificare launcher per eseguire docker pull di quell’immagine di base modificata dal tuo repository

Spero che questo possa essere d’aiuto in qualche piccolo modo?

Comunque, questo non è supportato su meta (o meglio, non lo è, credo), quindi sei da solo.

Buon hacking! :slight_smile:

Nota: non l’ho provato… ma sembra che ti stia divertendo! :slight_smile:

Devi apportare queste modifiche in un plugin o in un componente del tema.

Ciao @pfaffman,

Concordo pienamente con te: i plugin e i componenti del tema sono la strada da seguire! Questo metodo è pienamente supportato e garantisce un buon allineamento con il team di sviluppo di Meta.

È anche positivo essere curiosi, esplorare le possibilità e acquisire una comprensione più profonda di Discourse; dopo aver letto questo argomento di ieri, ho creato un registro Docker locale, ho etichettato l’immagine base di Discourse localmente, l’ho spinta nel mio nuovo registro Docker (localhost) e poi ho ricostruito un’applicazione Discourse recuperando l’immagine base da tale registro.

È divertente, secondo me, sperimentare e imparare di più su Discourse, e ho imparato molto da questa esplorazione/esperimento di sysadmin. Ovviamente, questo non è il modo in cui si dovrebbe eseguire un’applicazione in produzione, ma ho imparato molto passando attraverso i passaggi necessari per recuperare l’immagine base di Discourse da localhost invece che da remoto, ed è stato sorprendentemente semplice da fare. Quindi ho documentato questo esperimento per condividerlo con altri sysadmin curiosi:

Spero che altri esploratori sysadmin possano trarre beneficio da questo esperimento, anche in qualche piccola misura.

Rimani curioso

C’è un modo super semplice per implementare questo senza preoccuparsi delle immagini o della creazione di un plugin. Se ti limiti a modificare file piatti esistenti, puoi modificarli direttamente dal file app.yml.

Cerca hooks e pups. Diversi altre guide utilizzano già questo approccio.

Grazie @neounix

Anche a me piace imparare e provare cose nuove.

Un giorno, quando avrò tempo, cercherò di approfondire Docker e i registry locali.

Per ora, mi atterrò allo sviluppo di plugin, dato che è supportato da Discourse e si integra bene nel modello di sviluppo di Discourse.

Come hai detto, imparare queste cose è divertente, ma è anche bene rimanere nell’ambito principale!

:slight_smile:

Concordo.

Anche dopo aver sperimentato con il registro Docker locale e l’immagine di base locale di Discourse, non sono riuscito a ottenere risultati coerenti (non sono sicuro del perché, probabilmente mi manca qualche dettaglio chiave nella configurazione).

D’altro canto, ho imparato di più sui registri Docker locali e su come costruirli e gestirli.

Solo un esperimento collaterale con Docker… ho imparato un sacco, di certo!

Sì, sembra che l’unica opzione praticabile sia un plugin.

Grazie a tutti per le risposte e l’aiuto.

Che tipo di modifiche ai file stai apportando?