Passaggio da container standalone a container web e dati separati

Ciao Jay @pfaffman, grazie per questo post e per gli altri su questo argomento dei “due contenitori”, inclusi anche gli scritti di Sam a riguardo.

Domanda:

Abbiamo cercato di configurare due contenitori come hai menzionato: uno per data e uno per web-only, ma abbiamo incontrato diversi ostacoli nel farlo funzionare su macOS.

Ma prima di preoccuparci di correggere questa configurazione a “due contenitori” su macOS o Ubuntu, vorremmo assicurarci di farlo per le ragioni giuste.

Il motivo per cui vogliamo eseguire la “danza dei due contenitori” è affinché il sito non vada offline quando ricostruiamo l’app web, ad esempio durante l’installazione di un plugin. Inoltre, quando modifichiamo un plugin sviluppato internamente, abbiamo notato che a volte l’unico modo per garantire che le nostre modifiche funzionino è ricostruire (questa è un’altra storia per un altro giorno). Ho anche faticato a impostare una configurazione di sviluppo web “veloce e amichevole” che mi soddisfi, ma anche questo è un argomento per un altro giorno.

Quindi, la mia domanda è: la configurazione a “due contenitori” riduce significativamente i tempi di inattività quando viene ricostruita solo la parte “web-only” dell’app?

È questo il modo corretto di vedere la cosa, giusto?

Quando installiamo un plugin o lo modifichiamo, dobbiamo ricostruire solo il file yml “web-only” e non quello dei dati?

Proviamo da un ambiente LAMP, dove le modifiche ai plugin possono essere apportate principalmente in tempo reale sul sito live (senza tempi di inattività, a meno che non commettiamo errori). Inoltre, proveniamo da alcune applicazioni web VueJS in cui costruiamo sul desktop e poi carichiamo semplicemente la nuova applicazione, sostituendo quella vecchia, con aggiornamenti praticamente senza tempi di inattività per la parte VueJS del sito. Tuttavia, con Discourse otteniamo tempi di inattività, che non vogliamo (nemmeno di pochi secondi).

La soluzione a “due contenitori” mostra miglioramenti significativi nei tempi di inattività quando (1) ricostruiamo l’app (per plugin, modifiche al codice, ecc.) o (2) ripristiniamo da un backup completo?

Ho la sensazione che verrò “sgridato” (di nuovo) per aver fatto questa domanda, perché stiamo cercando un modo per eseguire Discourse in produzione e apportare modifiche con tempi di inattività quasi nulli, e non abbiamo ancora trovato un metodo per fare cose che sono così semplici da realizzare con un’app LAMP o VueJS (ad esempio).

Da qui la difficoltà e l’interesse per il metodo a “due contenitori”, che non siamo ancora riusciti a far funzionare correttamente.

Grazie!