La mia organizzazione gestisce un’applicazione web, un forum e alcune altre applicazioni come Bitwarden. Ho containerizzato tutto per ottenere la parità tra sviluppo e produzione e una configurazione di sviluppo semplice utilizzando Docker Compose. Utilizziamo un file compose molto simile per eseguire il tutto in produzione, e funziona molto bene per il nostro caso d’uso di base.
Vorrei passare il nostro forum a Discourse, ma sto faticando a capire come mantenere la parità tra sviluppo e produzione e una configurazione di sviluppo semplice.
La documentazione suggerisce che, anche se Discourse utilizza Docker per l’installazione e l’esecuzione, in realtà non si adatta al paradigma dei container come gli altri container Docker: non è possibile aggiungerlo a uno stack Compose, Swarm o Kubernetes per eseguirlo, collegandolo a container di database e Redis come si farebbe con un altro container applicativo. Le soluzioni alternative o i suggerimenti in tal senso sono fortemente sconsigliati per evitare di frammentare la comunità, quindi non sono qui per mettere in discussione questo approccio.
Ho accettato che, invece di eseguire e gestire Discourse come faccio con il resto del mio stack, dovrò utilizzare una VM dedicata in produzione e gestirla in modo diverso. Ma sono curioso di sapere come raggiungere i miei obiettivi fondamentali: una configurazione di sviluppo semplice che offra una buona parità con l’ambiente di produzione.
Per contestualizzare, la mia attuale configurazione di sviluppo è “installa Docker, clona questo repository ed esegui docker-compose up”. Se ho capito correttamente dalla guida all’installazione locale, ora saranno necessarie 9 dipendenze di sistema (Ruby, PostgreSQL, ecc.) prima di clonare e configurare manualmente Discourse. A mio avviso, uno dei vantaggi di Docker (e Docker Compose) è che non è necessario avere PostgreSQL e Redis in esecuzione sul proprio sistema (e i relativi problemi di configurazione quando gli sviluppatori utilizzano Windows); è possibile eseguire semplicemente uno stack e i processi sono isolati in container effimeri. Esiste un modo per mantenere questo vantaggio?
L’altro svantaggio è che, dato che siamo un piccolo team di volontari, la maggior parte degli altri sviluppatori utilizza Windows 10 Home, che, per quanto ne so, non supporta WSL, il che significa che non saranno comunque in grado di seguire le istruzioni di installazione per Windows (Docker funziona su Windows 10 Home).