Come raccogliere tutte le risorse statiche (js, css) utilizzate da Discourse

È una buona domanda, ma non ho una risposta soddisfacente per te.

Il sistema di configurazione utilizzato all’interno del container è:

Il README lì descrive come funzionano gli hook in generale. Gli hook specifici disponibili dipendono da come è configurata la tua istanza: il file principale app.yml include uno o più template. Nella maggior parte dei casi, uno di questi è web.template.yml:

È lì che viene definito l’hook assets_precompile (alla [riga 159] mentre scrivo). Secondo la documentazione di Pups, puoi eseguire altri comandi prima o dopo il completamento di questo utilizzando rispettivamente before_assets_precompile e after_assets_precompile.

I comandi vengono eseguiti all’interno del container Docker, quindi non devi fare nulla a tale proposito.

La direttiva cd: può puntare direttamente a /var/www/discourse/public/assets/ e ogni riga in cmd viene eseguita da quella directory. (Attenzione: ogni riga in un array cmd viene eseguita in una shell separata, come in un Makefile).

Non sono sicuro che il contenuto di /var/www/discourse/public/assets/ venga mantenuto tra le build, quindi potrebbe essere necessario creare il repository git locale ed eseguire un force push ogni volta. La soluzione “più corretta” potrebbe essere definire un volume Docker in app.yml per la directory degli asset su un volume Docker definito in app.yml come gli altri e mantenerlo persistente al di fuori del container.