Ho letto discussioni come questa e altre, e sembra che finora non esista un modo semplice per inserire un’immagine di Discourse in qualcosa come ECS, GKE o qualsiasi altro sistema di orchestrazione di container preferiate e farla funzionare senza problemi…
Uso Terraform per gestire un cluster Elasticache, un’istanza RDS e un cluster ECS. Vorrei solo poter dire: “Ecco la mia immagine di Discourse e ecco le variabili d’ambiente per connettersi a Postgres, Redis, SMTP, ecc.”
Esiste qualcosa di simile nel 2020? Sembra che in tutte le conversazioni precedenti su questo argomento non si sia raggiunto una soluzione soddisfacente, e siamo ancora bloccati con gli script personalizzati di Discourse che sfidano le convenzioni dei container e compromettono la compatibilità con il modo idiomatico in cui le persone utilizzano i container…
Questa è un’assunzione errata. Tutti questi sono elementi di Discourse e devono essere gestiti da Discourse all’interno del proprio container per garantire una configurazione corretta.
Se ti trovi in scenari complessi con più container, ciò è necessario solo per clienti di grandi dimensioni con molte risorse finanziarie; in tal caso, ti rimando al nostro servizio di hosting enterprise.
Perché allora serve questo strano script di bootstrap che avvia i container e funge da orchestratore?
Perché l’immagine di Discourse non può accettare variabili d’ambiente e, nel suo entrypoint, contattare tutte quelle risorse e creare le tabelle necessarie, ecc.? Altri servizi e applicazioni web che dipendono da livelli di persistenza esterni sono stati containerizzati con successo in questo modo. Basta inserirli in ECS, EKS o simili, indicare loro dove trovare il database, ecc., e tutto funziona perfettamente. È possibile fare lo stesso con Discourse?
È proprio perché siamo l’opposto, un’organizzazione no profit senza un budget enorme, che vogliamo mantenere i costi il più bassi possibile ospitando tutte le nostre applicazioni enterprise su un singolo host AWS ECS. Ma questo richiede che le singole applicazioni siano ben containerizzate e possano essere definite come definizioni di task ECS, ovvero immagini Docker autonome.
Beh, in un certo senso — dato che Discourse si adatta facilmente a un VPS da 5 dollari al mese come immagine Docker singola e diretta, non sono sicuro che strappare qualche centesimo da quella cifra, con un enorme aumento della difficoltà di installazione e della complessità di manutenzione continua, valga davvero la pena? Mantieni le cose semplici!
Come descritto nel link sopra, puoi creare container e avvistarli con Kubernetes. Ho eseguito deployment su GKE per alcuni clienti che ci tenevano perché legati alla piattaforma.
Se il tuo obiettivo è risparmiare denaro, l’opzione migliore è un piano da 5 a 10 dollari al mese.
I nostri strumenti sono ottimizzati per l’utente più comune in assoluto: piccoli gruppi senza un reparto IT specializzato per gestire l’orchestrazione dei container.
Tuttavia, le parti necessarie sono disponibili se avete bisogno di passare al “Full Cloud”. Il repository sorgente da consultare è:
Il file samples/web_only.yml contenuto mostra come utilizzare risorse esterne.
Lo script launcher è inoltre in grado di costruire un’immagine Docker personalizzata con il sottocomando bootstrap.