Eh… ![]()
Lo script non ha nemmeno bisogno di accedere a /var/discourse (perché lo fa?).
L’intero problema deriva da un paio di cose:
- enorme incomprensione di cosa sia Docker, come funzioni e cosa consenta
- incollare insieme la nozione che docker = docker-compose (non lo è!)
Puoi avere una configurazione completamente contenuta che virtualmente non tocca l’ambiente host…
Dopo aver scavato parecchio, sembra che l’intero script di “installazione” sia stato creato per rendere l’installazione il più semplice possibile per la persona molto non tecnica. Controlla, guida l’utente e imposta tutto. Questa potrebbe essere una cosa positiva, ma fallisce completamente in qualsiasi cosa tenti di deviare anche di un minimo dall’intento previsto.
Nella configurazione più basilare, potresti non aver nemmeno bisogno di accedere a nessuna directory host - tutto sarà contenuto all’interno di un ambiente limitato (l’immagine verrà utilizzata per creare il container e tutto lo storage richiesto verrebbe gestito tramite volumi Docker [ha problemi quando vuoi migrare altrove o accedere ai file, ma stiamo parlando delle basi]).
Tenta anche di assicurarsi che il DNS sia corretto, tenta di impostare certificati, proxy inverso, SMTP e quant’altro - di nuovo, va benissimo fornire questa configurazione semplice.
MA!
Il problema NON è buttare via tutto questo ma fornire IN AGGIUNTA un’immagine Docker semplice (è già lì, viene utilizzata dagli script e dai template usati dallo script! discourse_docker/templates/postgres.template.yml at main · discourse/discourse_docker · GitHub e discourse_docker/launcher at main · discourse/discourse_docker · GitHub) con
- versioning corretto: tagghi l’immagine con la versione rilasciata di Discourse (3.4.5 o quant’altro)
- documentazione sensata e semplice delle variabili d’ambiente attese (che guidano la connettività a database/redis/ecc.) e dei possibili percorsi/volumi che possono essere montati sull’host.
Solo questo…
Dai un’occhiata alla suddetta guida di Miniflux: Miniflux Installation with Docker - ti fornisce dettagli sull’immagine (e quali repository le servono) e le possibili variabili d’ambiente per configurarla.
O l’immagine Docker di MySQL: https://hub.docker.com/_/mysql - stessa cosa - una guida che spiega cosa è possibile configurare (vedi in particolare la sezione: “Environment Variables”).
Nessuno dice: “devi usare il launcher di MySQL per costruire l’immagine MySQL in modo da poterla usare”, o Redis per quella materia - in questo caso usi semplicemente le immagini esistenti e questo è l’indizio e il succo dell’uso di Docker. Eppure, nel caso di Discourse, improvvisamente questa è una soluzione “cattiva” e tutti gridano: “devi costruire la tua immagine!” – perché!?