¿Cómo realizar una restauración cuando tienes dos contenedores?

Pequeña pregunta: ¿cómo realizar la restauración cuando se tienen varios contenedores (data y web_only)? Intenté primero este tutorial desde dentro del contenedor de datos:

root@docker2:/var/discourse# ./launcher enter data
Se detectó la arquitectura x86_64.
root@docker2-data:/# discourse enable_restore
bash: discourse: comando no encontrado

OK, la aplicación discourse está en el contenedor web. Pero aquí la restauración lanza una excepción y termina con un error:

Las restauraciones ahora están permitidas. Desactívalas con `disable_restore`
root@forum:/var/www/discourse# discourse restore netzwissen-forum-2023-10-07-125819-v20230913194832.tar.gz
El nombre del plugin es 'discourse-topic-voting', pero el directorio del plugin se llama 'discourse-voting'
Iniciando restauración: netzwissen-forum-2023-10-07-125819-v20230913194832.tar.gz
[INICIADO]
¡'system' ha iniciado la restauración!
Marcando la restauración como en curso...
Asegurándose de que existe /var/www/discourse/tmp/restores/default/2023-10-07-132317...
Copiando el archivo a un directorio temporal...
EXCEPCIÓN: /var/www/discourse/lib/discourse.rb:138:in `exec': Fallo al copiar el archivo a un directorio temporal.
cp: no se puede encontrar el archivo '/var/www/discourse/public/backups/default/netzwissen-forum-2023-10-07-125819-v20230913194832.tar.gz': No existe tal archivo o directorio
/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>'
Intentando revertir...
No fue necesario revertir
Limpiando cosas...
Eliminando el directorio temporal '/var/www/discourse/tmp/restores/default/2023-10-07-132317'...
Marcando la restauración como finalizada...
Notificando a 'system' el fin de la restauración...
¡Terminado!
[FALLIDO]
Restauración completada.

¿Cuál es el truco para que la restauración funcione en implementaciones con contenedores de datos y web separados?

Gracias, Thommie

¿Subiste la copia de seguridad a /var/discourse/shared/web-only/default?

Puedes ejecutar

discourse restore

Para obtener una lista de las copias de seguridad disponibles.

También puedes ejecutar una copia de seguridad solo en web para ver dónde pone su valor, de modo que sepas que estás poniendo el tuyo en el lugar correcto.

EDITAR: Edité el OP y añadí esto:

¿Eso ayuda?

Hmmmm,
no, todavía no funciona

Tengo el archivo de copia de seguridad aquí:

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

Luego

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

Se detectó la arquitectura x86_64.
root@forum:/var/www/discourse#

root@forum:/var/www/discourse# discourse restore
Debe proporcionar un nombre de archivo para restaurar. ¿Quiso decir uno de los siguientes?

  
discourse restore forum-netzwissen-eu-2023-10-08-033221-v20230926165821.tar.gz

Entonces, la restauración solo muestra un archivo de copia de seguridad dentro del contenedor web_only de la nueva instancia del foro (el destino de la copia de seguridad). Pero no el archivo de copia de seguridad de la instancia de origen que está disponible en /var/discourse/shared/web-only/ en el sistema HOST

Por lo tanto, “discourse restore” no utiliza el volumen mapeado en el host, sino solo el que está dentro del contenedor.

??

debe estar en /var/discourse/shared/web-only/backups/default

dentro del contenedor, haz un

 discourse backup

y mira dónde pone la copia de seguridad y pon la tuya en el mismo lugar.

@pfaffman tienes razón, estaba en la carpeta incorrecta, la restauración ha finalizado con éxito

¡gracias por la ayuda!

1 me gusta

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