Comment sauvegarder et restaurer tout le dossier d'application /var/discourse ?

Vous ne pouvez pas simplement « archiver avec tar » le répertoire /var/discourse, le déplacer vers une autre machine, le décompresser et lancer l’application Discourse.

L’une des principales raisons est que, lorsque vous construisez / amorcez Discourse, le lanceur (le launcher, si ma mémoire est bonne) vérifie si un conteneur de base Discourse (une image) existe. S’il n’existe pas, il télécharge l’image Docker de base de Discourse et démarre cette image dans un conteneur.

Après ce git pull de base, le processus de construction crée une autre image Docker (l’application).

Ces deux images Docker (l’image de base et l’image de l’application) n’existent pas à l’intérieur de /var/discourse. Ainsi, archiver /var/discourse ne constitue qu’une « solution » partielle (en utilisant ce terme avec réserve).

Ces images Docker de Discourse sont construites en tant qu’images Docker et font partie de l’écosystème Docker ; elles ne « résident » pas dans /var/discourse mais y sont construites, puis déplacées vers Docker sous forme d’images.

Il est peut-être possible de modifier votre fichier YAML de conteneur et de reconstruire tout depuis zéro, mais la méthode la plus courante consiste simplement à sauvegarder :

  • vos fichier(s) YAML de conteneur,
  • votre sauvegarde complète incluant les pièces jointes.

Ensuite, modifiez votre fichier YAML de conteneur, clonez le dépôt discourse-docker et reconstruisez.

Ensuite, restaurez votre sauvegarde complète, y compris les pièces jointes (via la ligne de commande dans le conteneur).

Utiliser GitHub comme dépôt est une solution plus propre que l’ancienne méthode « à l’ancienne façon Unix » consistant à « archiver tout le bazar » et à « déplacer tout le bazar » vers un autre serveur. Cependant, même avec cette « vieille méthode Unix », cette approche n’offre souvent pas une solution complète, car il existe souvent des bibliothèques partagées dans le système, des répertoires d’utilisateurs de bibliothèques partagées, et plus encore, qui ne font pas partie du répertoire de distribution, ainsi que des fichiers dans /etc qui ne se trouvent pas dans le répertoire racine de la distribution, etc.

Ainsi, même sur la plupart des systèmes Linux modernes, nous utilisons apt (sur Ubuntu, par exemple) pour récupérer le dépôt. Dans le cas de Discourse Docker, vous récupérez (et construisez) discourse-docker pour configurer le conteneur de base, et un autre dépôt Discourse pour construire l’application. Donc, /var/discourse est un « lieu de construction » (des images) et un « lieu de partage » (des données, des sauvegardes, des fichiers statiques publics, etc.).

J’espère que ce résumé vous a été utile, ne serait-ce que légèrement.