Migración de contenedor independiente a contenedores web y de datos separados

Hola Jay @pfaffman, gracias por esta publicación y por otras sobre este tema de “dos contenedores”, incluyendo los escritos de Sam al respecto.

Pregunta:

Hemos estado intentando configurar dos contenedores como mencionas, uno para data y otro para web-only, y hemos encontrado varios obstáculos al intentar hacerlo funcionar en macOS.

Pero antes de preocuparnos por depurar esta “configuración de dos contenedores” en macOS o Ubuntu, nos gustaría asegurarnos de que estamos haciéndolo por la razón correcta.

La razón por la que queremos realizar este “baile de dos contenedores” es para que el sitio no se caiga cuando reconstruimos la aplicación web, por ejemplo, al instalar un plugin. Además, cuando ajustamos un plugin propio; hemos notado que a veces la única forma de asegurar que nuestros cambios funcionen es reconstruir (esa es una historia para otro día). También he estado luchando por configurar un entorno de desarrollo web “rápido y amigable” que me satisfaga; pero ese es otro tema para otro día.

Entonces, mi pregunta es: ¿la configuración de “dos contenedores” minimiza significativamente el tiempo de inactividad cuando se reconstruye la parte “solo web” de la aplicación?

¿Esa es la forma correcta de pensar en esto, verdad?

Cuando instalamos un plugin o lo ajustamos, ¿necesitamos reconstruir solo el archivo yml “solo web” y no el archivo yml de datos?

Venimos de un entorno LAMP donde los cambios en los plugins se realizan y se pueden hacer principalmente en tiempo de ejecución en el sitio en vivo (sin tiempo de inactividad, a menos que cometamos un error). También venimos de algunas aplicaciones web VueJS donde construimos en el escritorio y luego simplemente cargamos y colocamos la nueva aplicación, y prácticamente no hay tiempo de inactividad al actualizar o mejorar una parte de VueJS del sitio. Sin embargo, con Discourse obtenemos tiempo de inactividad, lo cual no queremos (ni siquiera unos pocos segundos).

¿La solución de “dos contenedores” muestra mejoras significativas en el tiempo de inactividad cuando (1) reconstruimos la aplicación (para plugins, ajustes de código, etc.) o (2) restauramos desde una copia de seguridad completa?

Siento que voy a recibir “golpes” (de nuevo) por hacer esta pregunta porque estamos buscando una forma de ejecutar Discourse en producción y realizar cambios con un tiempo de inactividad casi nulo, y aún no hemos encontrado una manera de hacer cosas que son tan fáciles de hacer con una aplicación LAMP o VueJS (por ejemplo).

De ahí la lucha / interés en el método de “dos contenedores”, que aún no hemos logrado poner en marcha.

¡Gracias!