Sto eseguendo Discourse su AWS ECS. Quando provo ad avviare l’applicazione, la scheda della console nel browser fallisce con i seguenti URL. Ho dimenticato qualche modifica alla configurazione?
Ho inserito il suddetto endpoint nel file database.yml.
Ho distribuito Discourse su ECS utilizzando Docker. Quando provo ad accedere all’applicazione, il browser di rete recupera le risorse dai seguenti URL invece di https://discuss-stage.tllms.com/.
Scommetto su un CDN mal configurato.
Puoi condividere il tuo config/discourse.conf?
E cerca nelle impostazioni del tuo sito c0fbtc per vedere se ci sono risultati.
Questo non sembra corretto. Al tuo posto, controllerei se il mio database non fosse in realtà locale e avesse un nome strano.
Penso che dovrebbe essere così:
# indirizzo host per il server db
# Questo è impostato su vuoto in modo che tenti di utilizzare prima i socket
db_host = discourse-test.c0fbtc1q6bvm.ap-south-1.rds.amazonaws.com
# nome del database su cui gira Discourse
db_name = default
(Devo avvisarti di non cercare di reinventare una ruota che funziona perfettamente. Inoltre, alcune persone qui non saranno molto entusiaste di supportarti, poiché ciò non avvantaggia la comunità).
Qualsiasi cosa tu faccia, alla fine dovresti assicurarti che quei valori finiscano correttamente nel tuo discourse.conf. Se lo hai modificato manualmente, dovresti almeno inserire il nome host AWS in db_host e lasciare db_name impostato su default.
faccio parte dello stesso team di Vijay. Il caso d’uso specifico che stiamo cercando di affrontare qui è fare un fork di Discourse e inserirlo nel repository GitHub della nostra azienda. Da lì, costruiremo e distribuiremo su AWS. Il motivo per cui vogliamo averlo nel nostro GitHub è mantenere la flessibilità di apportare modifiche in base alle nostre esigenze. Vorremmo contribuire dove possibile. Dato che non abbiamo trovato un Dockerfile nel repository pubblico di Discourse, abbiamo finito per crearne uno nostro per costruire l’immagine Docker. Inoltre, utilizziamo GitHub Actions per distribuire il Docker sul servizio AWS ECS.
Considerando la nostra esigenza, pensi che avremmo potuto adottare un approccio diverso?
Sì. La mia raccomandazione è di utilizzare i repository ufficiali di Discourse e discourse_docker e di implementare tutte le modifiche come plugin.
Utilizzare il repository ufficiale discourse_docker ti eviterà problemi come quello discusso in questo argomento, e non fare un fork di Discourse ma mantenere tutte le tue modifiche in plugin separati ti risparmierà di allontanarti dal ramo principale e di dover dedicare enormi sforzi per riportare tutte le modifiche upstream nel tuo fork.
La curva di apprendimento per lo sviluppo di plugin si ripagherà in termini di sforzo necessario per fondere le modifiche upstream nel giro di poche settimane, e da quel momento in poi sarà solo più efficiente.
Quando utilizzi il repository ufficiale di Discourse, puoi anche considerare l’hosting gestito, e le persone saranno più entusiaste (e/o meno costose) quando dovranno aiutarti.
Grazie per i vostri contributi. Ho alcune domande di follow-up:
Con l’approccio basato su plug-in, esiste la possibilità di imbattersi in un collo di bottiglia per alcuni requisiti che potrebbero non essere gestibili tramite plug-in? Ad esempio, la gestione dei ruoli utente in modo molto personalizzato?
Come apparirebbe la pipeline end-to-end se adottassimo il disco docker e lo distribuiamo nel nostro account AWS su ECS? Come ho già menzionato, al momento utilizziamo GitHub Actions per distribuire su ECS nel nostro account AWS. Quale strategia di distribuzione possiamo adottare partendo da un repository pubblico, mantenendo comunque protette le nostre credenziali AWS?
Inizia sempre con una copia del repository discourse_docker. Crea un file app.yml al suo interno.
Utilizza il comando sottomissione bootstrap dello script launcher nella tua copia locale di discourse_docker per creare un’immagine Docker. Carica l’immagine Docker in un repository Docker. Distribuisci quell’immagine Docker ovunque desideri.
Scrivi plugin se necessario. Elenca i tuoi plugin personalizzati nel file app.yml insieme agli altri plugin.
@ashish_rawat@Vijay_Vantipalli Come avete configurato Discourse Docker su ECS? Quando provo su un server EC2, Discourse funziona correttamente. Tuttavia, quando spingo l’immagine Docker di Discourse sul registro ECR e creo un task da quell’immagine, il container non si avvia: ottengo solo il codice di uscita 1. Sono bloccato da oltre una settimana. Mi farebbe molto piacere ricevere i vostri consigli. Grazie!
Ho creato un’istanza RDS separata e un cluster ElastiCache per Redis a questo scopo.
Grazie per la risposta veloce! Penso che mi stia solo sfuggendo qualcosa di semplice. Ci proverò.
Scusa se questo esula dal tuo ambito di competenza. Ho provato ad aggiungere il “-e” che ho trovato nell’app start-cmd, ma ci sono altri argomenti come i seguenti:
Sì, si tratta di mount di volumi. È assolutamente necessario che Discourse abbia spazio di archiviazione disponibile in /shared all’interno del contenitore.