No puedes simplemente “comprimir con tar” el directorio /var/discourse, moverlo a otra máquina, descomprimirlo y arrancar la aplicación Discourse.
Una de las razones principales es que, al construir/inicializar Discourse, el lanzador (según recuerdo de memoria) verifica si existe un contenedor base de Discourse (imagen) y descarga la imagen Docker base de Discourse (si no existe), para luego iniciar ese contenedor con la imagen base.
Después de ese git pull base, el proceso de construcción crea otra imagen Docker (la de la aplicación).
Ambas imágenes Docker (la imagen base y la imagen de la aplicación) no residen dentro de /var/discourse, por lo que comprimir /var/discourse con tar solo ofrece una solución parcial (usando este término con cierta flexibilidad).
Estas imágenes Docker de Discourse se construyen como imágenes Docker y forman parte de Docker; no “viven” en /var/discourse, sino que se construyen allí y luego se mueven a Docker como imágenes.
Podría ser posible editar tu archivo YAML del contenedor y reconstruir desde cero, pero la forma más convencional es simplemente guardar:
- los archivos YAML del contenedor
- tu copia de seguridad completa con las subidas
y luego editar tu archivo YAML del contenedor, clonar el repositorio discourse-docker y reconstruir.
Después, restaura tu copia de seguridad completa, incluidas las subidas (desde la línea de comandos dentro del contenedor).
Usar GitHub como repositorio es una solución más limpia que el antiguo método “unix” de “comprimir todo el maldito asunto” y “mover todo el maldito asunto” a otro servidor. Sin embargo, incluso con el “antiguo método unix”, este enfoque a menudo no ofrece una solución completa, ya que frecuentemente hay librerías compartidas en el sistema, directorios de usuarios con librerías compartidas y más, que no forman parte del directorio de distribución, además de archivos en /etc que no están en el directorio raíz de la distribución, etc.
Así que, incluso en la mayoría de los sistemas Linux modernos, usamos apt (en Ubuntu, por ejemplo) para obtener el repositorio. En el caso de Discourse con Docker, estás obteniendo (y construyendo) discourse-docker para configurar el contenedor base y otro repositorio de Discourse para construir la aplicación. Por lo tanto, /var/discourse es un “lugar para construir” (las imágenes) y un “lugar para compartir” (los datos, las copias de seguridad, los archivos estáticos públicos, etc.).
Espero que este resumen haya sido útil de alguna pequeña manera.