El mantenimiento del sitio con “./launcher rebuild app” tarda un tiempo en reconstruir completamente el sitio (instalando nuevos plugins, etc. desde git).
¿Hay alguna forma recomendada de mostrar una página estática que diga “En mantenimiento” mientras reconstruyo el discourse?
Pensé en usar nginx. Eso implica detener el docker para que sirva en el puerto 80 y dejar que nginx reverse proxy se encargue y redirija el tráfico al contenedor docker o a mi página estática.
Estoy pensando en hacerlo editando manualmente el nginx.conf a lo siguiente siempre que sea necesario,
La forma en que creo que es mejor y más fácil es usar una configuración de dos contenedores para que pueda construir un nuevo contenedor mientras el antiguo se ejecuta. De esa manera, hay mucho menos tiempo de inactividad. Otros piensan que ejecutar un servidor web adicional es más fácil.
Las actualizaciones importantes de la base de datos ocurren con menos frecuencia que una vez al año. Las actualizaciones menores de la base de datos no tardan mucho y puedes reconstruir el contenedor de datos, destruir e iniciar el contenedor web en muy pocos minutos. Parece que algunas personas preferirían tener un bonito mensaje que diga que el sitio está caído en lugar de reducir el tiempo de inactividad, por lo que un segundo contenedor es la forma de hacerlo.
En realidad, tal vez la solución más fácil sería tener un segundo contenedor nginx con un mensaje de “volvemos pronto” que ejecutarías manualmente mientras realizas una actualización, como
./launcher stop app
docker run nginx --name back-soon # y algo más para ver que se sirvió una página
./launcher bootstrap app
./launcher destroy app
docker stop back-soon
./launcher start app
Pero entonces tienes que obtener un certificado y mantener el certificado actualizado para el contenedor back-soon, lo cual es complicado.