Comment effectuer une restauration lorsque vous avez deux conteneurs ?

Petite question : comment effectuer la restauration lorsque vous avez plusieurs conteneurs (data et web_only). J’ai d’abord essayé ce tutoriel depuis l’intérieur du conteneur data :

root@docker2:/var/discourse# ./launcher enter data
x86_64 arch detected.
root@docker2-data:/# discourse enable_restore
bash: discourse: command not found

OK, l’application discourse se trouve dans le conteneur web. Mais ici, la restauration lance une exception et se termine par une erreur :

Les restaurations sont maintenant autorisées. Désactivez-les avec `disable_restore`
root@forum:/var/www/discourse# discourse restore netzwissen-forum-2023-10-07-125819-v20230913194832.tar.gz
Le nom du plugin est 'discourse-topic-voting', mais le répertoire du plugin est nommé 'discourse-voting'
Démarrage de la restauration : netzwissen-forum-2023-10-07-125819-v20230913194832.tar.gz
[DÉMARRÉ]
'system' a démarré la restauration !
Marquage de la restauration comme en cours...
Vérification que /var/www/discourse/tmp/restores/default/2023-10-07-132317 existe...
Copie de l'archive dans le répertoire tmp...
EXCEPTION : /var/www/discourse/lib/discourse.rb:138:in `exec': Échec de la copie de l'archive dans le répertoire tmp.
cp: impossible d'accéder à '/var/www/discourse/public/backups/default/netzwissen-forum-2023-10-07-125819-v20230913194832.tar.gz': Aucun fichier ou dossier de ce type
/var/www/discourse/lib/discourse.rb:172:in `execute_command'
/var/www/discourse/lib/discourse.rb:138:in `exec'
/var/www/discourse/lib/discourse.rb:34:in `execute_command'
/var/www/discourse/lib/backup_restore/local_backup_store.rb:47:in `download_file'
/var/www/discourse/lib/backup_restore/backup_file_handler.rb:62:in `copy_archive_to_tmp_directory'
/var/www/discourse/lib/backup_restore/backup_file_handler.rb:22:in `decompress'
/var/www/discourse/lib/backup_restore/restorer.rb:42:in `run'
script/discourse:149:in `restore'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.2.2/lib/thor/base.rb:485:in `start'
script/discourse:290:in `<top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:58:in `load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:58:in `kernel_load'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli/exec.rb:23:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:492:in `exec'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:34:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:28:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:34:in `dispatch'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/cli.rb:28:in `start'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/exe/bundle:45:in `block in <top (required)>'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'
/usr/local/lib/ruby/gems/3.2.0/gems/bundler-2.4.13/exe/bundle:33:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tentative de rollback...
Aucun rollback nécessaire
Nettoyage...
Suppression du répertoire tmp '/var/www/discourse/tmp/restores/default/2023-10-07-132317'...
Marquage de la restauration comme terminée...
Notification à 'system' de la fin de la restauration...
Terminé !
[ÉCHEC]
Restauration terminée.

Quel est le truc pour que la restauration fonctionne sur les déploiements avec des conteneurs data et web séparés ?

Merci, Thommie

Avez-vous téléchargé la sauvegarde dans /var/discourse/shared/web-only/default ?

Vous pouvez exécuter

discourse restore

Pour obtenir une liste des sauvegardes disponibles.

Vous pouvez également exécuter une sauvegarde sur web only pour voir où elle place sa valeur afin de savoir si vous placez la vôtre au bon endroit.

EDIT : J’ai modifié le message original et ajouté ceci :

Est-ce que cela aide ?

Hmmm,
non, ça ne fonctionne toujours pas.

J’ai le fichier de sauvegarde ici :

thommie@docker2:/var/discourse/shared/web-only$ ls  
backups  log  netzwissen-forum-2023-10-09-201019-v20230913194832.tar.gz

Puis

root@docker2:/var/discourse# ./launcher enter web_only

x86_64 arch detected.  
root@forum:/var/www/discourse#

root@forum:/var/www/discourse# discourse restore  
You must provide a filename to restore. Did you mean one of the following?  
  
discourse restore forum-netzwissen-eu-2023-10-08-033221-v20230926165821.tar.gz

Donc, la restauration ne montre qu’un fichier de sauvegarde provenant de l’intérieur du conteneur web_only de la nouvelle instance de forum (la cible de la sauvegarde). Mais pas le fichier de sauvegarde de l’instance source qui est disponible sur /var/discourse/shared/web-only/ sur le système HOST.

Donc, le “discourse restore” n’utilise pas le volume mappé sur l’hôte, mais seulement celui à l’intérieur du conteneur.

??

il doit être dans /var/discourse/shared/web-only/backups/default

à l’intérieur du conteneur, faites un

 discourse backup

et voyez où il place la sauvegarde et mettez la vôtre au même endroit.

@pfaffman vous avez raison, j’étais dans le mauvais dossier, la restauration s’est terminée avec succès

merci pour votre aide !

1 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.