Restauração de backup falha em ambiente Docker de desenvolvimento limpo: FATAL: Autenticação peer falhou para o usuário "postgres"

Olá, no guia para iniciantes para instalar o Discourse para desenvolvimento usando Docker, alguns comentários mencionam este problema que, na minha opinião, é um bug que deveria ser relatado aqui. Corrija-me se estiver errado.

Eu costumo criar uma cópia da produção para testar grandes alterações de configuração e já fiz isso muitas vezes antes. No entanto, agora os backups falham com este erro sobre a falha de autenticação do par.

Apenas para fornecer contexto sobre o que estou fazendo (potencialmente errado):

  1. Excluir o diretório local do Discourse completamente
  2. Parar e remover quaisquer contêineres
  3. Começar clonando o Discourse do zero e também os plugins que uso logo em seguida no diretório de plugins
  4. Executar os comandos boot_dev --init, bundle install se necessário, migrar o banco de dados se necessário.
  5. Com a conta de administrador dummy, faço login, faço o upload do backup que baixei do meu site principal
  6. Clico em restaurar backup.

Me diga se posso fornecer mais informações. Os logs de backup estão abaixo. E ah sim, verifiquei que o pg_hba.conf em data/postgres/ tinha todos os métodos de autenticação definidos como “trust”.

[2021-11-03 20:55:35] 'koen' iniciou a restauração!
[2021-11-03 20:55:35] Marcando restauração como em execução...
[2021-11-03 20:55:35] Garantindo que /src/tmp/restores/default/2021-11-03-205535 existe...
[2021-11-03 20:55:35] Copiando arquivo de archive para o diretório tmp...
[2021-11-03 20:55:35] Extraindo arquivo de dump...
[2021-11-03 20:55:36] Validando metadados...
[2021-11-03 20:55:36]   Versão atual: 20211022154420
[2021-11-03 20:55:36]   Versão restaurada: 20211022154420
[2021-11-03 20:55:36] Habilitando modo somente leitura...
[2021-11-03 20:55:36] Pausando sidekiq...
[2021-11-03 20:55:36] Aguardando até 60 segundos para o Sidekiq terminar de executar tarefas...
[2021-11-03 20:55:42] Criando funções ausentes no schema discourse_functions...
[2021-11-03 20:55:42] Restaurando arquivo de dump... (isso pode levar um tempo)
[2021-11-03 20:55:42] psql: erro: conexão com o servidor no socket \"/var/run/postgresql/.s.PGSQL.5432\" falhou: FATAL:  Peer authentication failed for user \"postgres\"
[2021-11-03 20:55:42] EXCEPTION: psql falhou: psql: erro: conexão com o servidor no socket \"/var/run/postgresql/.s.PGSQL.5432\" falhou: 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] Tentando reverter...
[2021-11-03 20:55:42] Não foi necessário reverter
[2021-11-03 20:55:42] Limpando...
[2021-11-03 20:55:42] Removendo funções do schema discourse_functions...
[2021-11-03 20:55:42] Removendo diretório tmp '/src/tmp/restores/default/2021-11-03-205535'...
[2021-11-03 20:55:42] Reativando sidekiq...
[2021-11-03 20:55:42] Marcando restauração como concluída...
[2021-11-03 20:55:42] Notificando 'koen' sobre o fim da restauração...
[2021-11-03 20:55:46] Concluído!
1 curtida

Olá a todos, só queria saber se isso se qualifica como um bug e se será aceito como tal? Devo escrevê-lo de forma diferente ou adicionar mais informações? Qual é o próximo passo, é tudo o que estou pensando, não estou pressionando por nenhuma data de resolução.

Olá a todos, algumas semanas depois, pensei em tentar novamente. Então, comecei tudo do zero novamente, configurei e acessei o novo ambiente de desenvolvimento em minha máquina local. Em seguida, adicionei os plugins para corresponder ao meu ambiente PROD. Fiz um backup do site ativo e tentei restaurá-lo em meu ambiente DTA. Infelizmente, ainda o mesmo erro.

Alguém consegue reproduzir isso? Eu já tive o ambiente de desenvolvimento nativo funcionando, mas me livrei dele quando percebi a facilidade de uso da configuração do docker. Algo pode estar me afetando desse legado? Algo errado vindo da antiga plataforma de banco de dados postgres local? Isso pode afetar um ao outro se a instalação limpa for executada a partir do docker? Apenas conjecturando. Alguém pode me indicar a direção certa ou as pessoas certas? Tirar uma cópia do site ativo para fins de teste é um caso de uso bastante importante, eu imagino? Há algo que eu possa fazer para fornecer mais informações? Estou executando a coisa do teste automático neste exato momento, mas isso também não produz nada…

[2021-11-29 19:43:39] 'koen' iniciou a restauração!
[2021-11-29 19:43:39] Marcando restauração como em execução...
[2021-11-29 19:43:39] Garantindo que /src/tmp/restores/default/2021-11-29-194339 exista...
[2021-11-29 19:43:39] Copiando arquivo de backup para o diretório tmp...
[2021-11-29 19:43:39] Extraindo o arquivo de dump...
[2021-11-29 19:43:40] Validando metadados...
[2021-11-29 19:43:40]   Versão atual: 20211124161346
[2021-11-29 19:43:40]   Versão restaurada: 20211123033311
[2021-11-29 19:43:40] Habilitando modo somente leitura...
[2021-11-29 19:43:40] Pausando sidekiq...
[2021-11-29 19:43:40] Aguardando até 60 segundos para o Sidekiq terminar de executar tarefas...
[2021-11-29 19:43:46] Criando funções ausentes no esquema discourse_functions...
[2021-11-29 19:43:46] Restaurando arquivo de dump... (isso pode demorar um pouco)
[2021-11-29 19:43:47] psql: erro: conexão com o servidor no socket \"/var/run/postgresql/.s.PGSQL.5432\" falhou: FATAL:  Peer authentication failed for user \"postgres\"
[2021-11-29 19:43:47] EXCEPTION: psql failed: psql: error: connection to server on socket \"/var/run/postgresql/.s.PGSQL.5432\" failed: 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] Tentando reverter...
[2021-11-29 19:43:47] Não foi necessário reverter
[2021-11-29 19:43:47] Limpando...
[2021-11-29 19:43:47] Removendo funções do esquema discourse_functions...
[2021-11-29 19:43:47] Removendo diretório tmp '/src/tmp/restores/default/2021-11-29-194339'...
[2021-11-29 19:43:47] Despausando sidekiq...
[2021-11-29 19:43:47] Marcando restauração como concluída...
[2021-11-29 19:43:47] Notificando 'koen' sobre o fim da restauração...
[2021-11-29 19:43:51] Concluído!

Koen

Bem, d/rake autospec resultou em 14 falhas, as 6 primeiras parecem estar relacionadas ao problema de autenticação PEER.

Não consigo entender nada, mas pensei em postar aqui para quando alguém puder investigar. Parece o mesmo erro, mas com diferentes versões do Postgres a cada vez.

Espero que ajude

Failures:

  1) BackupRestore::DatabaseRestorer#restore com psql real restaura do 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 com psql real restaura do 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 com psql real restaura do 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 com psql real restaura do 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 com psql real restaura do 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 com psql real restaura do 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)>'


Também estou vendo isso, nas mesmas circunstâncias. Tanto pela interface quanto pelo terminal.

Saída completa abaixo. Isso está sendo executado de dentro do WSL2 no Windows.

Alguma ideia?

$ 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' has started the restore!
Marking restore as running...
Making sure /src/tmp/restores/default/2022-03-28-104731 exists...
Copying archive to tmp directory...
Unzipping archive, this may take a while...
Extracting dump file...
Validating metadata...
  Current version: 20220325064954
  Restored version: 20220215015538
Enabling readonly mode...
Pausing sidekiq...
Waiting up to 60 seconds for Sidekiq to finish running jobs...
Creating missing functions in the discourse_functions schema...
Restoring dump file... (this may take a while)
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>'
Trying to rollback...
There was no need to rollback
Cleaning stuff up...
Dropping functions from the discourse_functions schema...
Removing tmp '/src/tmp/restores/default/2022-03-28-104731' directory...
Unpausing sidekiq...
Marking restore as finished...
Notifying 'system' of the end of the restore...
Finished!
[FAILED]
Restore done.
Failed to report error: can't alloc thread 0   PostSearchData Upsert (1.1ms)  INSERT INTO \"post_search_data\" (\"raw_data\",\"post_id\",\"locale\",\"version\",\"search_data\",\"private_message\") VALUES ('The restore has failed. Here’s the log: [2022-03-28 10:47:31] [STARTED] [2022-03-28 10:47:31] ''system'' has started the restore! [2022-03-28 10:47:31] Marking restore as running... [2022-03-28 10:47:31] Making sure /src/tmp/restores/default/2022-03-28-104731 exists... [2022-03-28 10:47:31] Copying archive to tmp directory... [2022-03-28 10:47:31] Unzipping archive, this may take a while... [2022-03-28 10:47:31] Extracting dump file... [2022-03-28 10:47:32] Validating metadata... [2022-03-28 10:47:32] Current version: 20220325064954 [2022-03-28 10:47:32] Restored version: 20220215015538 [2022-03-28 10:47:32] Enabling readonly mode... [2022-03-28 10:47:32] Pausing sidekiq... [2022-03-28 10:47:32] Waiting up to 60 seconds for Sidekiq to finish running jobs... [2022-03-28 10:47:38] Creating missing functions in the discourse_functions schema... [2022-03-28 10:47:38] Restoring dump file... (this may take a while) [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] Trying to rollback... [2022-03-28 10:47:38] There was no need to rollback [2022-03-28 10:47:38] Cleaning stuff up... [2022-03-28 10:47:38] Dropping functions from the discourse_functions schema... [2022-03-28 10:47:38] Removing tmp ''/src/tmp/restores/default/2022-03-28-104731'' directory... [2022-03-28 10:47:38] Unpausing sidekiq... [2022-03-28 10:47:38] Marking restore as finished... [2022-03-28 10:47:38] Notifying ''system'' of the end of the restore...', 17, 'en', 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 curtida

Tive os mesmos problemas.
Finalmente, inseri o seguinte como uma solução alternativa

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

antes de

  DatabaseConfiguration.new(

em /lib/backup_restore.rb.

Também tive que definir a senha para o usuário discourse via

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

Pode haver maneiras melhores de conseguir isso.

1 curtida

Muito obrigado! Ajudou muito! :slight_smile:

Isso deve ser considerado um Bug, na minha opinião.

Bug de baixa prioridade, pois não afeta um site em produção. E não acho que ninguém da equipe use atualmente o ambiente Docker para desenvolvimento. Recategorizei o tópico e adicionei a tag pr-welcome a ele.

4 curtidas

Isso funciona para mim:

Mas existem várias outras maneiras de corrigir isso para escolher:

  • adicionar configuração de ambiente USER=discourse à imagem de boot do docker

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

  • adicionar isso a backup_restore.rb

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

Além disso, há um novo problema ao executar d/discourse no ambiente de desenvolvimento 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>'

enquanto d/bundle exec script/discourse backup funciona (veja patch).

Olá @gerhard,

Encontrei o mesmo problema mencionado neste tópico, e o PR acima resolveu meu problema. Acho que este PR deve ser reaberto e mesclado.

1 curtida

O PR não é ideal, só queremos adicionar um usuário se ele for explicitamente definido, forçar todos os ambientes de desenvolvimento a ter o usuário discourse não está certo.

Eu posso lidar com essa variável de ambiente opcionalmente, se ela for definida.

2 curtidas

Não estou usando o ambiente docker de desenvolvimento, então não consigo testar, mas talvez isso 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"],
     )

Se funcionar, por favor, crie um PR.

1 curtida

Se usarmos a abordagem do dev container, apenas adicionar "USER": "discourse", na seção "remoteEnv", funcionará e permitirá exportar o banco de dados.