Como fazer backup e restaurar toda a pasta de aplicativo /var/discourse?

Você não pode simplesmente “tarar” o diretório /var/discourse, movê-lo para outra máquina, descompactá-lo e iniciar o aplicativo Discourse.

Uma das principais razões é que, ao construir/inicializar o Discourse, o launcher (como me recordo de cabeça) verifica se existe um contêiner base do Discourse (imagem) e baixa a imagem Docker base do Discourse (se não existir), iniciando essa imagem Docker base em um contêiner.

Após esse git pull base, o processo de construção cria outra imagem Docker (a do aplicativo).

Ambas as imagens Docker (a imagem base e a imagem do aplicativo) não existem dentro de /var/discourse, então tarar /var/discourse é apenas uma “solução” parcial (usando esse termo de forma leve).

Essas imagens Docker do Discourse são construídas como imagens Docker e, como parte do Docker; elas não “vivem” em /var/discourse, mas são construídas lá e depois movidas para o Docker como imagens Docker.

Pode ser possível editar seu arquivo YAML do contêiner e reconstruir do zero, mas a maneira mais convencional é apenas salvar seu:

  • arquivo(s) YAML do contêiner
  • seu backup completo com uploads

E então editar seu YAML do contêiner, clonar o repositório discourse-docker e reconstruir.

Em seguida, restaure seu backup completo, incluindo uploads (pela linha de comando dentro do contêiner).

Usar o GitHub como repositório é uma solução mais limpa do que a maneira mais antiga e “unixiana” de “tarar tudo aquilo” e “mover tudo aquilo” para outro servidor. No entanto, mesmo com a “maneira unix antiga”, esse método muitas vezes não fornece uma solução completa porque há frequentemente bibliotecas compartilhadas no sistema, diretórios de usuários de bibliotecas compartilhadas e mais, que não fazem parte do diretório de distribuição, e há arquivos etc que não estão no diretório raiz da distribuição, etc.

Portanto, mesmo na maioria dos sistemas Linux modernos, usamos apt (no Ubuntu, por exemplo) para baixar o repositório. No caso do Docker do Discourse, você está baixando (e construindo) o discourse-docker para configurar o contêiner base e outro repositório do Discourse para construir o aplicativo. Assim, /var/discourse é um “local de construção” (das imagens) e um “local de compartilhamento” (dos dados, dos backups, dos arquivos estáticos públicos, etc.).

Espero que este resumo tenha sido útil de alguma pequena forma.