La manutenzione del sito con “./launcher rebuild app” richiede del tempo per ricostruire completamente il sito (installando nuovi plugin, ecc. da git).
Esiste un modo consigliato per mostrare una pagina statica dicendo “In manutenzione” mentre ricostruisco discourse?
Ho pensato di usare nginx. Ciò comporta l’arresto di docker per servire sulla porta 80 e lasciare che nginx reverse proxy prenda il controllo e reindirizzi il traffico al container docker o alla mia pagina statica.
Sto pensando di farlo modificando manualmente nginx.conf nel modo seguente ogni volta che è necessario,
Il modo in cui penso sia migliore e più facile è usare una configurazione a due container in modo da poter costruire un nuovo container mentre quello vecchio è in esecuzione. In questo modo il tempo di inattività è molto minore. Altri pensano che eseguire un web server aggiuntivo sia più facile.
Gli aggiornamenti importanti del database avvengono meno di una volta all’anno. Gli aggiornamenti minori del database non richiedono molto tempo e puoi ricostruire il container dei dati, distruggere e avviare il container web in pochissimi minuti. Sembra che alcune persone preferirebbero un bel messaggio che dica che il sito è inattivo piuttosto che ridurre i tempi di inattività, quindi un secondo container è la soluzione.
In realtà, forse la soluzione più semplice sarebbe avere un secondo container nginx con un messaggio “torneremo presto” che si esegue manualmente durante un aggiornamento, come
./launcher stop app
docker run nginx --name back-soon # e altro ancora per vedere che una pagina è stata servita
./launcher bootstrap app
./launcher destroy app
docker stop back-soon
./launcher start app
Ma poi devi ottenere un certificato e mantenerlo aggiornato per il container back-soon, il che è complicato.