La restauration de sauvegarde échoue dans un environnement Docker de développement propre : FATAL : échec de l'authentification peer pour l'utilisateur « postgres »

Salut, dans le guide pour débutants pour installer Discourse pour le développement à l’aide de Docker, certains commentaires mentionnent ce problème qui, je pense, est en fait un bug qui devrait être signalé comme tel ici. Corrigez-moi si je me trompe.

J’ai tendance à créer une copie de la production pour tester les modifications de configuration majeures et j’ai créé de nombreuses fois une ardoise vierge comme celle-ci auparavant. Cependant, maintenant, les sauvegardes échouent avec cette erreur concernant l’échec de l’authentification par pair.

Juste pour donner un contexte sur ce que je fais (potentiellement mal) :

  1. Supprimer complètement le répertoire local de Discourse.
  2. Arrêter et supprimer tous les conteneurs.
  3. Démarrer à nouveau en clonant Discourse et aussi les plugins que j’utilise directement après dans le répertoire des plugins.
  4. Exécuter les incantations boot_dev --init, bundle install si nécessaire, migrate database si nécessaire.
  5. Avec le compte administrateur factice, je me connecte, je télécharge la sauvegarde que j’ai téléchargée de mon site en direct.
  6. Je clique sur restaurer la sauvegarde.

Faites-moi savoir si je peux fournir plus d’informations. Les journaux de sauvegarde sont ci-dessous. Et oui, j’ai vérifié que le pg_hba.conf dans data/postgres/ avait toutes les méthodes d’authentification définies sur “trust”.

[2021-11-03 20:55:35] 'koen' a commencé la restauration !
[2021-11-03 20:55:35] Marquage de la restauration comme en cours...
[2021-11-03 20:55:35] S'assurer que /src/tmp/restores/default/2021-11-03-205535 existe...
[2021-11-03 20:55:35] Copie de l'archive dans le répertoire temporaire...
[2021-11-03 20:55:35] Extraction du fichier de vidage...
[2021-11-03 20:55:36] Validation des métadonnées...
[2021-11-03 20:55:36]   Version actuelle : 20211022154420
[2021-11-03 20:55:36]   Version restaurée : 20211022154420
[2021-11-03 20:55:36] Activation du mode lecture seule...
[2021-11-03 20:55:36] Mise en pause de Sidekiq...
[2021-11-03 20:55:36] Attente jusqu'à 60 secondes pour que Sidekiq termine les tâches en cours...
[2021-11-03 20:55:42] Création des fonctions manquantes dans le schéma discourse_functions...
[2021-11-03 20:55:42] Restauration du fichier de vidage... (cela peut prendre un certain temps)
[2021-11-03 20:55:42] psql: erreur : la connexion au serveur sur le socket « /var/run/postgresql/.s.PGSQL.5432 » a échoué : FATAL : L'authentification par paire a échoué pour l'utilisateur « postgres »
[2021-11-03 20:55:42] EXCEPTION : psql a échoué : psql: erreur : la connexion au serveur sur le socket « /var/run/postgresql/.s.PGSQL.5432 » a échoué : FATAL : L'authentification par paire a échoué pour l'utilisateur « 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] Tentative de retour arrière...
[2021-11-03 20:55:42] Il n'y avait pas besoin de retour arrière
[2021-11-03 20:55:42] Nettoyage...
[2021-11-03 20:55:42] Suppression des fonctions du schéma discourse_functions...
[2021-11-03 20:55:42] Suppression du répertoire temporaire '/src/tmp/restores/default/2021-11-03-205535'...
[2021-11-03 20:55:42] Réactivation de Sidekiq...
[2021-11-03 20:55:42] Marquage de la restauration comme terminée...
[2021-11-03 20:55:42] Notification à 'koen' de la fin de la restauration...
[2021-11-03 20:55:46] Terminé !
1 « J'aime »

Salut à tous, je me demandais juste si cela pouvait être considéré comme un bug et s’il serait accepté comme tel ? Dois-je le décrire différemment ou ajouter plus d’informations ? Je me demande juste quelle est la prochaine étape, je n’insiste pas pour une date de résolution quelle qu’elle soit.

Salut à tous, quelques semaines plus tard, j’ai pensé retenter ma chance. J’ai donc tout recommencé à zéro, configuré et connecté à l’environnement de développement fraîchement installé sur ma machine locale. Ensuite, j’ai ajouté les plugins pour correspondre à mon environnement PROD. J’ai récupéré une sauvegarde du site en direct et j’essaie de la restaurer sur mon environnement DTA. Hélas, toujours la même erreur.

Quelqu’un peut-il reproduire cela ? J’ai eu un environnement de développement natif qui fonctionnait, mais je m’en suis débarrassé lorsque j’ai constaté la facilité d’utilisation de la configuration Docker. Quelque chose pourrait-il me gêner de cet ancien système ? Quelque chose qui ne va pas et qui provient de l’ancienne plateforme de base de données postgres locale ? Est-ce que cela peut même se gêner mutuellement si la nouvelle installation s’exécute depuis Docker ? Je ne fais que conjecturer. Quelqu’un peut-il m’orienter dans la bonne direction ou vers les bonnes personnes ? Prendre une copie du site en direct à des fins de test est une fonctionnalité assez importante, j’imagine ? Y a-t-il quelque chose que je puisse faire pour fournir plus d’informations ? Je lance le test automatique en ce moment même, mais cela ne donne rien non plus…

[2021-11-29 19:43:39] 'koen' a démarré la restauration !
[2021-11-29 19:43:39] Marquage de la restauration comme en cours...
[2021-11-29 19:43:39] Vérification que /src/tmp/restores/default/2021-11-29-194339 existe...
[2021-11-29 19:43:39] Copie de l'archive dans le répertoire temporaire...
[2021-11-29 19:43:39] Extraction du fichier de sauvegarde...
[2021-11-29 19:43:40] Validation des métadonnées...
[2021-11-29 19:43:40]   Version actuelle : 20211124161346
[2021-11-29 19:43:40]   Version restaurée : 20211123033311
[2021-11-29 19:43:40] Activation du mode lecture seule...
[2021-11-29 19:43:40] Mise en pause de Sidekiq...
[2021-11-29 19:43:40] Attente jusqu'à 60 secondes pour que Sidekiq termine les tâches en cours...
[2021-11-29 19:43:46] Création des fonctions manquantes dans le schéma discourse_functions...
[2021-11-29 19:43:46] Restauration du fichier de sauvegarde... (cela peut prendre un certain temps)
[2021-11-29 19:43:47] 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] 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] Tentative de rollback...
[2021-11-29 19:43:47] Pas besoin de rollback
[2021-11-29 19:43:47] Nettoyage...
[2021-11-29 19:43:47] Suppression des fonctions du schéma discourse_functions...
[2021-11-29 19:43:47] Suppression du répertoire temporaire '/src/tmp/restores/default/2021-11-29-194339'...
[2021-11-29 19:43:47] Réactivation de Sidekiq...
[2021-11-29 19:43:47] Marquage de la restauration comme terminée...
[2021-11-29 19:43:47] Notification à 'koen' de la fin de la restauration...
[2021-11-29 19:43:51] Terminé !

Koen

Eh bien, d/rake autospec a généré 14 échecs, dont les 6 premiers semblent liés au problème d’authentification PEER.

Je n’y comprends rien, mais j’ai pensé à le poster ici pour quand quelqu’un pourra enquêter. On dirait la même erreur mais avec différentes versions de Postgres à chaque fois.

J’espère que cela aidera.

Failures:

  1) BackupRestore::DatabaseRestorer#restore with real psql restores from 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 with real psql restores from 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 with real psql restores from 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 with real psql restores from 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 with real psql restores from 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 with real psql restores from 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)>'


Je vois aussi cela, dans les mêmes circonstances. À la fois via l’interface utilisateur et le terminal.

Sortie complète ci-dessous. Ceci est exécuté depuis WSL2 sur Windows.

Des idées ?

$ 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 « J'aime »

J’ai eu les mêmes problèmes.
Finalement, j’ai inséré ce qui suit comme solution de contournement

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

avant

  DatabaseConfiguration.new(

dans /lib/backup_restore.rb.

J’ai également dû définir le mot de passe de l’utilisateur discourse via

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

Il pourrait y avoir de meilleures façons d’y parvenir.

1 « J'aime »

Merci beaucoup ! Ça m’a vraiment aidé ! :slight_smile:

Ceci devrait être considéré comme un Bug, à mon humble avis.

Bug de faible priorité car il n’affecte pas un site de production. Et je ne pense pas que quelqu’un de l’équipe utilise actuellement l’environnement Docker pour le développement. J’ai reclassé le sujet et y ai ajouté la balise pr-welcome.

4 « J'aime »

Cela fonctionne pour moi :

Mais il existe plusieurs autres façons de résoudre ce problème parmi lesquelles choisir :

  • ajouter le paramètre d’environnement USER=discourse à l’image de démarrage docker

  • ajouter -e USER=discourse \\ à d\\exec

  • ajouter ceci à backup_restore.rb

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

De plus, il y a un nouveau problème lors de l’exécution de d/discourse dans l’environnement de développement 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>'

alors que d/bundle exec script/discourse backup fonctionne (voir patch).

Salut @gerhard,

J’ai rencontré le même problème mentionné dans ce sujet, et cette PR l’a résolu pour moi. Je pense que cette PR devrait être rouverte et fusionnée.

1 « J'aime »

La RP n’est pas idéale, nous ne voulons ajouter un utilisateur que s’il est explicitement défini, forcer tous les environnements de développement à avoir l’utilisateur discourse n’est pas correct.

Je suis d’accord pour gérer cette variable d’environnement de manière facultative, si elle est définie.

2 « J'aime »

Je n’utilise pas l’environnement docker de développement, donc je ne peux pas le tester, mais peut-être que cela fonctionnera ?

--- 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 c’est le cas, veuillez créer une PR.

1 « J'aime »

Si nous utilisons l’approche du conteneur de développement, il suffira d’ajouter "USER": "discourse" dans la section "remoteEnv" pour pouvoir exporter la base de données.