Qualcosa di banale che pensavo ma non sono riuscito a trovare una risposta chiara, quindi chiedo qui.
Con container solo web - come creare e utilizzare un’immagine che tali container dovrebbero/potrebbero condividere?
Ciò deve sicuramente avere senso - un container di “discorso” così “leggero” con tutto all’esterno (in particolare con un budget da pover’uomo su VM XS) ognuno con la propria immagine Docker… non ha senso nella mia mente, giusto?
Spero che mi manchi qualche documentazione/guida “ovvia” su uno scenario così semplice (e comune/popolare)?
molte grazie.
Sì, puoi usare un singolo postgres per più siti Discourse, ma a meno che tu non utilizzi il multisite (vedi Multisite configuration with Docker), ognuno ha bisogno del proprio redis.
Dovresti creare un altro database e configurare il secondo container web per utilizzarlo invece di quello chiamato Discourse.
Grazie per aver dedicato del tempo, per averci provato, tuttavia… non è quello che sto chiedendo.
Ci riproverò, perdonami se fallisco… di nuovo
Quando io:
$ ./launcher bootstrap a.forum.xyz # o simile
allora il processo crea:
- $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
local_discourse/a.forum.xyz latest d7a7b6509811 2 ore fa 4.19GB
e questo accade con ogni launcher eseguito per un forum diverso/nuovo.
Quindi finisco con più immagini dello stesso discourse - sono solo io e il risultato dovrebbe essere diverso?
Se non sono solo io e questo è il risultato desiderato e atteso, allora è - certo che non sono uno sviluppatore e non ho conoscenza dei processi coinvolti - piuttosto davvero estremamente dispendioso (forse in particolare con il container solo web) - no?
Quello che speravo - quando ho provato discourse per la prima volta - quello che mi aspettavo era, praticamente quello che fa tutto il resto, ogni altro software dockerizzato, ovvero - ottenere quell’unica immagine ed eseguire molti container da essa. Discourse non è in grado di farlo?
Se si desidera utilizzare lo stesso container con impostazioni diverse per siti diversi, è possibile
./launcher start-cmd
Per ottenere i parametri per avviarlo. È possibile modificarli per gli altri siti che si desidera eseguire. Sarà comunque necessario un database e un redis per ciascuno.
Contiene copie uniche dei temi del tuo sito, che includono JS, CSS e altri tipi di asset.
Inoltre, la combinazione unica dei tuoi plugin e delle loro dipendenze.
È una lunga storia, ma Discourse e la maggior parte degli strumenti sono precedenti a cose come Docker compose.
Distribuiamo un container “fat” che contiene tutto, e ci sono diversi compromessi. Come uno, il container stateful consente funzionalità come il nostro aggiornamento “one-click” basato sul web.
Alla fine, il nostro status quo attuale funziona bene per le persone che sono solo leggermente inclini alla tecnologia, che possono copiare e incollare comandi in una sessione SSH e configurare DNS, ma non sono maestri dei container Linux.
E per quanto riguarda i maestri dei container Linux, possiamo dire loro che possono prendere quell’immagine “bootstrapped”, spedirla a un registry e riutilizzarla sul loro software di orchestrazione di container preferito.
Le persone tra le due persone sopra, invece, sentono maggiormente il dolore.
Non ho trovato una spiegazione su come utilizzare un unico Redis per più istanze in quella guida, ma questo sembra funzionare “out of the box” quando la configurazione multisite è disponibile?
Ho capito bene?
a) Multisite esegue la stessa immagine Docker per più forum, utilizzando un unico server Redis e un unico server Postgres.
b) Utilizzare un unico Redis per più istanze Discourse (utilizzando la stessa immagine o meno) non è possibile, poiché senza attivare il multisite, nessun prefisso verrà aggiunto alle chiavi Redis.
c) Non esiste un altro modo per imporre un prefisso alle chiavi Redis.
d) L’imposizione di prefissi diversi per le chiavi Redis per diverse immagini Discourse consentirebbe l’utilizzo di un unico server Redis.
e) Il supporto generale per l’imposizione di un prefisso Redis generale richiederebbe diverse modifiche al core.