Restauración de copia de seguridad fallando en entorno Docker de desarrollo limpio: FATAL: Error de autenticación por pares para el usuario “postgres”

Hola, en la guía para principiantes para instalar Discourse para desarrollo usando Docker algunos comentarios mencionan este problema que creo que es en realidad un error que debería reportarse como tal aquí. Corrígeme si me equivoco.

Suelo crear una copia de producción para probar cambios importantes de configuración y he creado muchas veces un lienzo limpio como este antes. Sin embargo, ahora las copias de seguridad fallan con este error sobre la autenticación de pares que falla.

Solo para proporcionar contexto sobre lo que estoy haciendo (potencialmente mal):

  1. Elimino el directorio local de Discourse por completo.
  2. Detengo y elimino cualquier contenedor.
  3. Empiezo de nuevo clonando Discourse y también los plugins que uso directamente después en el directorio de plugins.
  4. Ejecuto las incantaciones de boot_dev --init, bundle install si es necesario, migro la base de datos si es necesario.
  5. Con la cuenta de administrador ficticia, inicio sesión, subo la copia de seguridad que descargué de mi sitio en vivo.
  6. Pulso restaurar copia de seguridad.

Avísame si puedo proporcionar más información. Los registros de copia de seguridad están a continuación. Y sí, comprobé que pg_hba.conf en data/postgres/ tuviera todos los métodos de autenticación configurados como “trust”.

[2021-11-03 20:55:35] 'koen' ha iniciado la restauración!
[2021-11-03 20:55:35] Marcando restauración como en curso...
[2021-11-03 20:55:35] Asegurándose de que /src/tmp/restores/default/2021-11-03-205535 existe...
[2021-11-03 20:55:35] Copiando archivo a directorio temporal...
[2021-11-03 20:55:35] Extrayendo archivo de volcado...
[2021-11-03 20:55:36] Validando metadatos...
[2021-11-03 20:55:36]   Versión actual: 20211022154420
[2021-11-03 20:55:36]   Versión restaurada: 20211022154420
[2021-11-03 20:55:36] Habilitando modo de solo lectura...
[2021-11-03 20:55:36] Pausando sidekiq...
[2021-11-03 20:55:36] Esperando hasta 60 segundos para que Sidekiq termine de ejecutar trabajos...
[2021-11-03 20:55:42] Creando funciones faltantes en el esquema discourse_functions...
[2021-11-03 20:55:42] Restaurando archivo de volcado... (esto puede tardar un tiempo)
[2021-11-03 20:55:42] psql: error: la conexión al servidor en el socket \"/var/run/postgresql/.s.PGSQL.5432\" falló: FATAL:  Peer authentication failed for user \"postgres\"
[2021-11-03 20:55:42] EXCEPTION: psql falló: psql: error: la conexión al servidor en el socket \"/var/run/postgresql/.s.PGSQL.5432\" falló: FATAL:  Peer authentication failed for user \"postgres\"
[2021-11-03 20:55:42] /src/lib/backup_restore/database_restorer.rb:92:in `restore_dump'
/src/lib/backup_restore/database_restorer.rb:26:in `restore'
/src/lib/backup_restore/restorer.rb:51:in `run'
/src/script/spawn_backup_restore.rb:23:in `restore'
/src/script/spawn_backup_restore.rb:36:in `block in <main>'
/src/script/spawn_backup_restore.rb:4:in `fork'
/src/script/spawn_backup_restore.rb:4:in `<main>'
[2021-11-03 20:55:42] Intentando revertir...
[2021-11-03 20:55:42] No hubo necesidad de revertir
[2021-11-03 20:55:42] Limpiando...
[2021-11-03 20:55:42] Eliminando funciones del esquema discourse_functions...
[2021-11-03 20:55:42] Eliminando el directorio temporal '/src/tmp/restores/default/2021-11-03-205535'...
[2021-11-03 20:55:42] Reanudando sidekiq...
[2021-11-03 20:55:42] Marcando restauración como finalizada...
[2021-11-03 20:55:42] Notificando a 'koen' el fin de la restauración...
[2021-11-03 20:55:46] ¡Terminado!
1 me gusta

Hola a todos, solo me preguntaba, ¿esto se clasifica como un error y será aceptado como tal? ¿Debería escribirlo de manera diferente o agregar más información? Me pregunto cuál es el siguiente paso, no estoy presionando para obtener ninguna fecha de resolución.

Hola a todos, un par de semanas después, pensé en intentarlo de nuevo. Así que volví a empezar de cero, configuré e inicié sesión en el nuevo entorno de desarrollo en mi máquina local. Luego agregué los plugins para que coincidieran con mi entorno de producción. Extraje una copia de seguridad del sitio en vivo e intenté restaurarla en mi entorno de DTA. Lamentablemente, sigo obteniendo el mismo error.

¿Alguien puede reproducir esto? Una vez tuve el entorno de desarrollo nativo funcionando, pero me deshice de él cuando noté la facilidad de uso de la configuración de Docker. ¿Podría algo de ese legado estar afectándome? ¿Algo malo que provenga de la anterior plataforma de base de datos postgres local? ¿Puede eso siquiera afectarse mutuamente si la instalación limpia se ejecuta desde Docker? Solo estoy especulando. ¿Alguien puede orientarme en la dirección correcta o indicarme a las personas adecuadas? Imagino que tomar una copia del sitio en vivo para fines de prueba es un caso de uso bastante importante, ¿verdad? ¿Hay algo que pueda hacer para proporcionar más información? Estoy ejecutando la prueba automática en este momento, pero eso tampoco arroja nada…

[2021-11-29 19:43:39] 'koen' ha iniciado la restauración.
[2021-11-29 19:43:39] Marcando la restauración como en curso...
[2021-11-29 19:43:39] Asegurándose de que /src/tmp/restores/default/2021-11-29-194339 existe...
[2021-11-29 19:43:39] Copiando el archivo a la carpeta temporal...
[2021-11-29 19:43:39] Extrayendo el archivo de volcado...
[2021-11-29 19:43:40] Validando metadatos...
[2021-11-29 19:43:40]   Versión actual: 20211124161346
[2021-11-29 19:43:40]   Versión restaurada: 20211123033311
[2021-11-29 19:43:40] Habilitando el modo de solo lectura...
[2021-11-29 19:43:40] Pausando sidekiq...
[2021-11-29 19:43:40] Esperando hasta 60 segundos para que Sidekiq termine de ejecutar trabajos...
[2021-11-29 19:43:46] Creando funciones faltantes en el esquema discourse_functions...
[2021-11-29 19:43:46] Restaurando el archivo de volcado... (esto puede tardar un tiempo)
[2021-11-29 19:43:47] psql: error: la conexión al servidor en el socket "/var/run/postgresql/.s.PGSQL.5432" falló: FATAL:  Peer authentication failed for user "postgres"
[2021-11-29 19:43:47] EXCEPTION: psql falló: psql: error: la conexión al servidor en el socket "/var/run/postgresql/.s.PGSQL.5432" falló: FATAL:  Peer authentication failed for user "postgres"

[2021-11-29 19:43:47] /src/lib/backup_restore/database_restorer.rb:92:in `restore_dump'
/src/lib/backup_restore/database_restorer.rb:26:in `restore'
/src/lib/backup_restore/restorer.rb:51:in `run'
/src/script/spawn_backup_restore.rb:23:in `restore'
/src/script/spawn_backup_restore.rb:36:in `block in <main>'
/src/script/spawn_backup_restore.rb:4:in `fork'
/src/script/spawn_backup_restore.rb:4:in `<main>'
[2021-11-29 19:43:47] Intentando revertir...
[2021-11-29 19:43:47] No fue necesario revertir
[2021-11-29 19:43:47] Limpiando...
[2021-11-29 19:43:47] Eliminando funciones del esquema discourse_functions...
[2021-11-29 19:43:47] Eliminando el directorio temporal '/src/tmp/restores/default/2021-11-29-194339'...
[2021-11-29 19:43:47] Reanudando sidekiq...
[2021-11-29 19:43:47] Marcando la restauración como finalizada...
[2021-11-29 19:43:47] Notificando a 'koen' el fin de la restauración...
[2021-11-29 19:43:51] ¡Terminado!

Koen

Bueno, d/rake autospec arrojó 14 fallos, los primeros 6 de los cuales parecen estar relacionados con el problema de autenticación PEER.

No entiendo nada, pero pensé en publicarlo aquí para cuando alguien pueda investigarlo. Parece el mismo error pero con diferentes versiones de Postgres cada vez.

Espero que esto ayude

Failures:

  1) BackupRestore::DatabaseRestorer#restore con psql real restaura desde PostgreSQL 9.5
     Failure/Error: raise DatabaseRestoreError.new("psql failed: #{last_line}") if Process.last_status&.exitstatus != 0

     BackupRestore::DatabaseRestoreError:
       psql failed: psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  Peer authentication failed for user "postgres"
     # ./lib/backup_restore/database_restorer.rb:92:in `restore_dump'
     # ./lib/backup_restore/database_restorer.rb:26:in `restore'
     # ./spec/lib/backup_restore/shared_context_for_backup_restore.rb:59:in `execute_stubbed_restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:41:in `restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:45:in `expect_restore_to_work'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:61:in `block (4 levels) in <main>'
     # ./spec/rails_helper.rb:284:in `block (2 levels) in <top (required)>'

  2) BackupRestore::DatabaseRestorer#restore con psql real restaura desde PostgreSQL 9.3
     Failure/Error: raise DatabaseRestoreError.new("psql failed: #{last_line}") if Process.last_status&.exitstatus != 0

     BackupRestore::DatabaseRestoreError:
       psql failed: psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  Peer authentication failed for user "postgres"
     # ./lib/backup_restore/database_restorer.rb:92:in `restore_dump'
     # ./lib/backup_restore/database_restorer.rb:26:in `restore'
     # ./spec/lib/backup_restore/shared_context_for_backup_restore.rb:59:in `execute_stubbed_restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:41:in `restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:45:in `expect_restore_to_work'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:51:in `block (4 levels) in <main>'
     # ./spec/rails_helper.rb:284:in `block (2 levels) in <top (required)>'

  3) BackupRestore::DatabaseRestorer#restore con psql real restaura desde PostgreSQL 12
     Failure/Error: raise DatabaseRestoreError.new("psql failed: #{last_line}") if Process.last_status&.exitstatus != 0

     BackupRestore::DatabaseRestoreError:
       psql failed: psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  Peer authentication failed for user "postgres"
     # ./lib/backup_restore/database_restorer.rb:92:in `restore_dump'
     # ./lib/backup_restore/database_restorer.rb:26:in `restore'
     # ./spec/lib/backup_restore/shared_context_for_backup_restore.rb:59:in `execute_stubbed_restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:41:in `restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:45:in `expect_restore_to_work'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:74:in `block (4 levels) in <main>'
     # ./spec/rails_helper.rb:284:in `block (2 levels) in <top (required)>'

  4) BackupRestore::DatabaseRestorer#restore con psql real restaura desde PostgreSQL 11
     Failure/Error: raise DatabaseRestoreError.new("psql failed: #{last_line}") if Process.last_status&.exitstatus != 0

     BackupRestore::DatabaseRestoreError:
       psql failed: psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  Peer authentication failed for user "postgres"
     # ./lib/backup_restore/database_restorer.rb:92:in `restore_dump'
     # ./lib/backup_restore/database_restorer.rb:26:in `restore'
     # ./spec/lib/backup_restore/shared_context_for_backup_restore.rb:59:in `execute_stubbed_restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:41:in `restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:45:in `expect_restore_to_work'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:70:in `block (4 levels) in <main>'
     # ./spec/rails_helper.rb:284:in `block (2 levels) in <top (required)>'

  5) BackupRestore::DatabaseRestorer#restore con psql real restaura desde PostgreSQL 9.5.5
     Failure/Error: raise DatabaseRestoreError.new("psql failed: #{last_line}") if Process.last_status&.exitstatus != 0

     BackupRestore::DatabaseRestoreError:
       psql failed: psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  Peer authentication failed for user "postgres"
     # ./lib/backup_restore/database_restorer.rb:92:in `restore_dump'
     # ./lib/backup_restore/database_restorer.rb:26:in `restore'
     # ./spec/lib/backup_restore/shared_context_for_backup_restore.rb:59:in `execute_stubbed_restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:41:in `restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:45:in `expect_restore_to_work'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:56:in `block (4 levels) in <main>'
     # ./spec/rails_helper.rb:284:in `block (2 levels) in <top (required)>'

  6) BackupRestore::DatabaseRestorer#restore con psql real restaura desde PostgreSQL 10
     Failure/Error: raise DatabaseRestoreError.new("psql failed: #{last_line}") if Process.last_status&.exitstatus != 0

     BackupRestore::DatabaseRestoreError:
       psql failed: psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  Peer authentication failed for user "postgres"
     # ./lib/backup_restore/database_restorer.rb:92:in `restore_dump'
     # ./lib/backup_restore/database_restorer.rb:26:in `restore'
     # ./spec/lib/backup_restore/shared_context_for_backup_restore.rb:59:in `execute_stubbed_restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:41:in `restore'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:45:in `expect_restore_to_work'
     # ./spec/lib/backup_restore/database_restorer_spec.rb:66:in `block (4 levels) in <main>'
     # ./spec/rails_helper.rb:284:in `block (2 levels) in <top (required)>'


También veo esto, en las mismas circunstancias. Tanto a través de la interfaz de usuario como de la terminal.

Salida completa a continuación. Esto se está ejecutando desde WSL2 en Windows.

¿Alguna idea?

$ d/discourse restore ragdoll-forums-2022-03-27-000005-v20220215015538.tar.gz
Starting restore: ragdoll-forums-2022-03-27-000005-v20220215015538.tar.gz
[STARTED]
'system' ha iniciado la restauración!
Marcando la restauración como en curso...
Asegurándose de que existe /src/tmp/restores/default/2022-03-28-104731...
Copiando el archivo a la carpeta temporal...
Descomprimiendo el archivo, esto puede tardar un poco...
Extrayendo el archivo de volcado...
Validando metadatos...
  Versión actual: 20220325064954
  Versión restaurada: 20220215015538
Habilitando el modo de solo lectura...
Pausando sidekiq...
Esperando hasta 60 segundos para que Sidekiq termine de ejecutar trabajos...
Creando funciones faltantes en el esquema discourse_functions...
Restaurando el archivo de volcado... (esto puede tardar un poco)
psql: error: connection to server on socket \"/var/run/postgresql/.s.PGSQL.5432\" failed: FATAL:  Peer authentication failed for user \"postgres\"
EXCEPTION: psql failed: psql: error: connection to server on socket \"/var/run/postgresql/.s.PGSQL.5432\" failed: FATAL:  Peer authentication failed for user \"postgres\"
/src/lib/backup_restore/database_restorer.rb:92:in `restore_dump'
/src/lib/backup_restore/database_restorer.rb:26:in `restore'
/src/lib/backup_restore/restorer.rb:51:in `run'
script/discourse:149:in `restore'
/usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'
script/discourse:290:in `<main>'
Intentando revertir...
No fue necesario revertir
Limpiando cosas...
Eliminando funciones del esquema discourse_functions...
Eliminando el directorio temporal '/src/tmp/restores/default/2022-03-28-104731'...
Reanudando sidekiq...
Marcando la restauración como finalizada...
Notificando a 'system' el fin de la restauración...
¡Terminado!
[FAILED]
Restauración completada.
Error al informar: no se puede asignar hilo 0   PostSearchData Upsert (1.1ms)  INSERT INTO \"post_search_data\" (\"raw_data\",\"post_id\",\"locale\",\"version\",\"search_data\",\"private_message\") VALUES ('La restauración ha fallado. Aquí está el registro: [2022-03-28 10:47:31] [STARTED] [2022-03-28 10:47:31] ''system'' ha iniciado la restauración! [2022-03-28 10:47:31] Marcando la restauración como en curso... [2022-03-28 10:47:31] Asegurándose de que existe /src/tmp/restores/default/2022-03-28-104731... [2022-03-28 10:47:31] Copiando el archivo a la carpeta temporal... [2022-03-28 10:47:31] Descomprimiendo el archivo, esto puede tardar un poco... [2022-03-28 10:47:31] Extrayendo el archivo de volcado... [2022-03-28 10:47:32] Validando metadatos... [2022-03-28 10:47:32] Versión actual: 20220325064954 [2022-03-28 10:47:32] Versión restaurada: 20220215015538 [2022-03-28 10:47:32] Habilitando el modo de solo lectura... [2022-03-28 10:47:32] Pausando sidekiq... [2022-03-28 10:47:32] Esperando hasta 60 segundos para que Sidekiq termine de ejecutar trabajos... [2022-03-28 10:47:38] Creando funciones faltantes en el esquema discourse_functions... [2022-03-28 10:47:38] Restaurando el archivo de volcado... (esto puede tardar un poco) [2022-03-28 10:47:38] psql: error: connection to server on socket \"/var/run/postgresql/.s.PGSQL.5432\" failed: FATAL : Peer authentication failed for user \"postgres\" [2022-03-28 10:47:38] EXCEPTION: psql failed: psql: error: connection to server on socket \"/var/run/postgresql/.s.PGSQL.5432\" failed: FATAL: Peer authentication failed for user \"postgres\" [2022-03-28 10:47:38] /src/lib/backup_restore/database_restorer.rb:92:in `restore_dump'' /src/lib/backup_restore/database_restorer.rb:26:in `restore'' /src/lib/backup_restore/restorer.rb:51:in `run'' script/discourse:149:in `restore'' /usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'' /usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'' /usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'' /usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/base.rb:485:in `start'' script/discourse:290:in ` \u003c main \u003e '' [2022-03-28 10:47:38] Intentando revertir... [2022-03-28 10:47:38] No fue necesario revertir [2022-03-28 10:47:38] Limpiando cosas... [2022-03-28 10:47:38] Eliminando funciones del esquema discourse_functions... [2022-03-28 10:47:38] Eliminando el directorio temporal '/src/tmp/restores/default/2022-03-28-104731'... [2022-03-28 10:47:38] Reanudando sidekiq... [2022-03-28 10:47:38] Marcando la restauración como finalizada... [2022-03-28 10:47:38] Notificando a ''system'' el fin de la restauración...', 17, 'es', 4, '''-03'':12,19,30,40,50,61,74,83,91,100,109,118,126,143,157,171,193,218,262,271,283,292,305,315,323,333 ''-28'':13,20,31,41,51,62,75,84,92,101,110,119,127,144,158,172,194,219,263,272,284,293,306,316,324,334 ''/src/lib/backup_restore/database_restorer.rb'':223,228 ''/src/lib/backup_restore/restorer.rb'':232 ''/src/tmp/restores/default/2022-03-28-104731'':47,312 ''/usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor.rb'':249 ''/usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/base.rb'':253 ''/usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/command.rb'':240 ''/usr/local/lib/ruby/gems/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb'':244 ''/var/run/postgresql/.s.pgsql.5432'':183,208 ''10'':14,21,32,42,52,63,76,85,93,102,111,120,128,145,159,173,195,220,264,273,285,294,307,317,325,335 ''127'':245 ''149'':237 ''2022'':11,18,29,39,49,60,73,82,90,99,108,117,125,142,156,170,192,217,261,270,282,291,304,314,322,332 ''20220215015538'':107 ''20220325064954'':98 ''26'':229 ''27'':241 ''290'':258 ''31'':16,23,34,44,54,65,78 ''32'':87,95,104,113,122,130 ''38'':147,161,175,197,222,266,275,287,296,309,319,327,337 ''392'':250 ''47'':15,22,33,43,53,64,77,86,94,103,112,121,129,146,160,174,196,221,265,274,286,295,308,318,326,336 ''485'':254 ''51'':233 ''60'':134 ''92'':224 ''archiv'':56,67 ''authent'':187,212 ''clean'':288 ''command'':248 ''connect'':178,203 ''copi'':55 ''creat'':148 ''current'':96 ''directori'':59,313 ''discours'':153,301 ''dispatch'':252 ''drop'':297 ''dump'':80,163,227 ''enabl'':114 ''end'':342 ''error'':177,202 ''except'':198 ''exist'':48 ''extract'':79 ''fail'':2A,6,184,188,200,209,213 ''fatal'':185,210 ''file'':81,164 ''finish'':139,331 ''function'':150,154,298,302 ''invok'':247 ''job'':141 ''main'':260 ''make'':45 ''mark'':35,328 ''may'':69,166 ''metadata'':89 ''miss'':149 ''mode'':116 ''need'':279 ''notifi'':338 ''paus'':123 ''peer'':186,211 ''postgr'':191,216 ''psql'':176,199,201 ''readon'':115 ''remov'':310 ''restor'':1A,4,28,36,105,162,226,231,239,329,345 ''rollback'':269,281 ''run'':38,140,235,243 ''schema'':155,303 ''script/discourse'':236,257 ''second'':135 ''server'':180,205 ''sidekiq'':124,137,321 ''socket'':182,207 ''start'':17,26,256 ''stuff'':289 ''sure'':46 ''system'':24,339 ''take'':70,167 ''tmp'':58,311 ''tri'':267 ''unpaus'':320 ''unzip'':66 ''user'':190,215 ''valid'':88 ''version'':97,106 ''wait'':131 ', TRUE) ON CONFLICT (\"post_id\") DO UPDATE SET \"raw_data\"=excluded.\"raw_data\",\"locale\"=excluded.\"locale\",\"version\"=excluded.\"version\",\"search_data\"=excluded.\"search_data\",\"private_message\"=excluded.\"private_message\" RETURNING \"post_id\"
1 me gusta

He tenido los mismos problemas.
Finalmente inserté lo siguiente como solución alternativa

   if Rails.env.development?
      username = "discourse"
      password = "discourse"
      config["host"] = "localhost"
      config["port"] = 5432
      config["database"] = "discourse_development"
    end

antes de

  DatabaseConfiguration.new(

en /lib/backup_restore.rb.

También tuve que establecer la contraseña para el usuario discourse a través de

d/psql -c "ALTER USER discourse WITH PASSWORD 'discourse';"

Puede que haya mejores maneras de lograr esto.

1 me gusta

¡Muchas gracias! ¡Realmente ayudó! :slight_smile:

Esto debería considerarse un Bug, en mi humilde opinión.

Error de baja prioridad, ya que no afecta a un sitio de producción. Y no creo que nadie del equipo utilice actualmente el entorno de Docker para el desarrollo. He reclasificado el tema y le he puesto la etiqueta pr-welcome.

4 Me gusta

Esto funciona para mí:

Pero hay varias otras formas de solucionarlo para elegir:

  • agregar la configuración de entorno USER=discourse a la imagen de arranque de docker

  • agregar -e USER=discourse \\ a d\\exec

  • agregar esto a backup_restore.rb

      if Rails.env.development?
        username = ENV["USER"] || "discourse"
      end
    

Además, hay un nuevo problema al ejecutar d/discourse en el entorno de desarrollo de docker:

$ d/discourse backup

<internal:/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:86:in `require': cannot load such file -- thor (LoadError)
        from <internal:/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:86:in `require'
        from script/discourse:4:in `<main>'

mientras que d/bundle exec script/discourse backup funciona (ver patch).

Hola @gerhard,

Encontré el mismo problema mencionado en este tema, y el PR anterior resolvió mi problema. Creo que este PR debería reabrirse y fusionarse.

1 me gusta

El PR no es ideal, solo queremos agregar un usuario allí si está explícitamente definido, forzar a todos los entornos de desarrollo a tener el usuario discourse no es correcto.

Estoy de acuerdo con manejar esta variable de entorno opcionalmente, si está definida.

2 Me gusta

No estoy usando el entorno docker de desarrollo, así que no puedo probarlo, pero ¿quizás esto funcione?

--- a/lib/backup_restore.rb
+++ b/lib/backup_restore.rb
@@ -135,7 +135,8 @@ module BackupRestore
     DatabaseConfiguration.new(
       config["backup_host"] || config["host"],
       config["backup_port"] || config["port"],
-      config["username"] || username || ENV["USER"] || "postgres",
+      config["username"] || username || ENV["USER"] || ENV["DISCOURSE_DEV_DB_USERNAME"] ||
+        "postgres",
       config["password"] || password,
       config["database"],
     )

Si funciona, por favor crea una PR.

1 me gusta

Si usamos el enfoque de contenedor de desarrollo, simplemente agregando "USER": "discourse", en la sección "remoteEnv", funcionará y permitirá exportar la base de datos.