Oups, d/cleanup est dangereux. C’est un bon moyen de perdre beaucoup de travail Docker qui n’a rien à voir avec Discourse…
J’ai commencé à faire quelques hacks manuels comme ceux qui suivent et qui fonctionnaient, mais il y avait de plus en plus de problèmes de permissions, alors j’ai décidé d’arrêter d’essayer d’éteindre des feux.
mkdir app/assets/javascripts/plugins
mkdir tmp
sudo chown 1000:1000 tmp
sudo chown 1000:1000 app/assets/javascripts/plugins
Je vais utiliser l’utilisateur hôte avec un uid de 1000 et je parie que cela va fonctionner maintenant, mais cela expose vraiment une lacune dans la façon dont le développement de Discourse semble être fait.
… et oui, cela a résolu le problème.
Dans le cas de ce « tmp », cela pourrait être dans un volume Docker nommé ou anonyme. Avec les plugins, il pourrait être utile d’avoir ce volume monté, mais les permissions du système de fichiers hôte devraient être modifiées pour prendre en charge les écritures.
Je ne pense pas qu’il soit prudent de supposer que tous les développeurs utiliseront un uid de 1000.
Salut à tous, savez-vous comment exécuter le développement en utilisant une ancienne version de Discourse ? Je sais que dans Discourse en production, nous pouvons définir la version dans app.yml. Mais je ne sais pas comment faire en développement avec Docker. Je veux exécuter le développement sur la dernière version stable v2.7.10. Merci de votre aide.
Il suffit de faire un checkout de cette branche ou de ce commit dans git. (La façon dont je procède est de rechercher sur Google
Vous devrez supprimer, créer et migrer la base de données après avoir effectué la rétrogradation.
Salut, merci @pfaffman,
J’ai fait un git pull propre de Discourse et j’ai basculé sur la branche de version « stable ». (qui utilise le tag discourse v2.7.10)
J’ai exécuté dev init et défini l’e-mail et le mot de passe de l’utilisateur administrateur
d/boot_dev --init
et j’ai exécuté rails server, il écoutera sur le port 3000
d/rails s
puis j’ai exécuté ember-cli
cd app/assets/javascripts/discourse
yarn
yarn run ember serve --proxy "http://localhost:3000"
Discourse en développement peut être ouvert sur « http://localhost:4200 »
Cependant, j’ai un problème lorsque je me connecte en tant qu’utilisateur administrateur (celui que j’ai créé lors de l’exécution de « d/boot_dev --init »)
Une fenêtre pop-up « Erreur inconnue » s’affiche, avec l’erreur ci-dessous dans /logs
ActiveRecord::StatementInvalid (PG::UndefinedFunction: ERROR: function max(boolean) does not exist
LINE 1: ..._rank, MAX(user_badges.created_at) AS created_at, MAX(user_b...
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
)
lib/freedom_patches/ams_include_without_root.rb:49:in `include!'
app/controllers/application_controller.rb:495:in `serialize_data'
app/controllers/application_controller.rb:504:in `render_serialized'
app/controllers/session_controller.rb:611:in `login'
app/controllers/session_controller.rb:337:in `create'
app/controllers/application_controller.rb:395:in `block in with_resolved_locale'
app/controllers/application_controller.rb:395:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/missing_avatars.rb:23:in `call'
lib/middleware/turbo_dev.rb:34:in `call'
Avez-vous de l’expérience avec cette erreur ? ou peut-être que mes étapes pour exécuter le développement sur la version précédente étaient incorrectes ?
Je pense que vous devez faire rm -r de la base de données. Je ne suis pas sûr de son emplacement, mais elle se trouve probablement dans l’OP.
Salut à tous,
J’ai tout recommencé à zéro. Tout se passe bien, j’obtiens un environnement de développement vierge dans lequel je peux me connecter.
Ensuite, j’installe quelques plugins pour qu’ils correspondent à mon environnement de production et je récupère la sauvegarde la plus récente.
Je la télécharge, j’essaie de la restaurer sur l’environnement de développement et je rencontre à nouveau l’erreur d’authentification par pair. J’ai signalé un bug, mais pour l’instant, il n’y a pas de réponse. Quelqu’un peut-il essayer de reproduire ? J’ai vu des problèmes similaires plus loin dans les commentaires de ce post, donc je pense que je ne suis pas le seul dans ce cas ?
[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 tmp...
[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: erreur : la connexion au serveur sur le socket « /var/run/postgresql/.s.PGSQL.5432 » a échoué : FATAL : échec de l'authentification par paire pour l'utilisateur « postgres »
[2021-11-29 19:43:47] EXCEPTION : psql a échoué : psql: erreur : la connexion au serveur sur le socket « /var/run/postgresql/.s.PGSQL.5432 » a échoué : FATAL : échec de l'authentification par paire pour l'utilisateur « 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 tmp '/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é !
Bonjour,
J’ai un problème qui semble provenir du schisme entre les ports 3000 et 4200. Je ne suis pas entièrement sûr de la façon dont ils sont liés l’un à l’autre, mais ma compréhension est que 3000 est le serveur et 4200 un proxy vers celui-ci depuis l’Ember CLI. Le port 4200 fonctionne bien, sauf que parfois, et spécifiquement lors de la réponse avec un 302, les en-têtes de réponse contiennent des URI qui utilisent le port 3000 au lieu de 4200. J’essayais spécifiquement de faire fonctionner OAuth2 avec un fournisseur personnalisé comme décrit ici, et la présence du port 3000 dans certaines réponses casse le flux de travail OAuth2. Il n’y a pas de port 3000 dans ma configuration OAuth2, il doit provenir de l’intérieur du serveur.
Quelqu’un a-t-il déjà rencontré ce type de problème ? Savez-vous comment configurer un environnement qui imite plus fidèlement la version de production ?
Pour information, j’ai également essayé de configurer la version de production localement, mais cela nécessite un enregistrement de domaine et d’e-mail complet et ne semble pas très convivial pour les environnements locaux.
Merci.
Mise à jour, j’ai réessayé d’adopter une approche « clean-slate » et cette fois en utilisant une autre machine. Maintenant, je suis bloqué car je n’ai pas l’UID 1000 qui a été mentionné plus haut dans ce fil, post 100 par @dcook. Je suis d’accord que supposer que UID=1000 est erroné et constituerait un bug. L’avez-vous signalé comme tel ?
Sur ma machine principale, le bug de permission de l’utilisateur Postgress persiste, que j’ai soulevé ici : Backup restore failing on clean dev docker env: FATAL: Peer authentication failed for user “postgres”.
@rishabh, quel est votre avis sur ces deux points ? J’ai adoré passer à la méthode basée sur Docker, rapide et propre. Mais maintenant, sur deux machines différentes, cela ressemble un peu à une impasse et je me demande ce que je peux faire d’autre pour aider à la résoudre. Je me demande aussi un peu sur le cycle de vie des bugs. Sont-ils reçus, examinés, rejetés ou acceptés, mis en attente, résolus, etc. ?
Pour l’instant, je vais essayer de configurer l’environnement de développement natif pour voir si je peux le faire fonctionner.
Bonjour. C’est la première fois que j’installe Discourse en utilisant Docker sur Mac.
Tout d’abord, je suis désolé pour mon anglais… ![]()
J’ai déjà exécuté
d/boot_dev --init
puis j’ai obtenu une erreur indiquant que le port 3000 était déjà utilisé. J’ai donc changé le port 30030:3000 (fichier : bin/docker/boot_dev)
Après cela, j’ai lancé ce code
d/boot_dev --init
# Dans un terminal :
d/rails s
# Et dans un terminal séparé
d/ember-cli
Mes questions sont :
-
Lorsque j’exécute le code
d/rails s, je peux ouvrir la page de démarrage de Discourse sur ‘localhost:30030’. Si je veux juste ouvrir Discourse et utiliser le port 30030 (redirection de port), puis-je terminer le processus d’installation ? Je ne sais pas ce que sontd/rails setd/ember-cli. … -
Et le processus
d/rails sest très long. Je m’inquiète de savoir s’il y a un problème… est-ce correct ? Ou biend/rails setd/ember-clisont-ils des processus d’arrière-plan lors de l’hébergement de Discourse ?
Merci. ![]()
Salut,
Dans l’environnement de développement, est-il possible de modifier les paramètres de configuration qui devraient être placés dans app.yml ?
La question concerne principalement la modification de DISCOURSE_ENABLE_CORS ; l’ajout simple d’origines CORS dans l’interface d’administration n’a pas permis de résoudre l’erreur CORS.
Merci.
Il semble que la création d’un fichier discourse.conf sous /config ait résolu le problème :
enable_cors = true
Informations tirées du fichier de configuration par défaut : discourse/config/discourse_defaults.conf at main · discourse/discourse · GitHub
Salut tout le monde, j’ai un problème lors de l’initialisation du développement de Discourse avec Docker.
Mon Discourse de production utilise la version tag v2.8.0. Je dois donc exécuter le développement local en utilisant la v2.8.0.
J’utilise Docker qui fonctionne sur Mac OS pour ma configuration de développement.
Ce que j’ai fait en ligne de commande est :
git clone https://github.com/discourse/discourse.git
cd discourse
git checkout v2.8.0
d/boot_dev --init
J’ai obtenu cette erreur après que le code d’initialisation ait atteint la section de migration de la base de données :
Migrating database...
== 20220104053343 AddBookmarkPolymorphicColumns: migrating ====================
-- add_column(:bookmarks, :bookmarkable_id, :integer)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists
/src/lib/migration/safe_migrate.rb:92:in `async_exec'
/src/db/migrate/20220104053343_add_bookmark_polymorphic_columns.rb:5:in `change'
/src/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/src/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/src/lib/migration/safe_migrate.rb:28:in `migrate'
/src/lib/migration/safe_migrate.rb:55:in `migrate'
/src/lib/tasks/db.rake:218:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:33:in `block in synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:14:in `synchronize'
/src/lib/tasks/db.rake:210:in `block in <main>'
Caused by:
ActiveRecord::StatementInvalid: PG::DuplicateColumn: ERROR: column "bookmarkable_id" of relation "bookmarks" already exists
/src/lib/migration/safe_migrate.rb:92:in `async_exec'
/src/db/migrate/20220104053343_add_bookmark_polymorphic_columns.rb:5:in `change'
/src/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/src/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/src/lib/migration/safe_migrate.rb:28:in `migrate'
/src/lib/migration/safe_migrate.rb:55:in `migrate'
/src/lib/tasks/db.rake:218:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:33:in `block in synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:14:in `synchronize'
/src/lib/tasks/db.rake:210:in `block in <main>'
Il y a 2 mois, j’ai exécuté le développement en utilisant la version 2.8.0 et je n’ai eu aucun problème, mais il y a quelques jours, j’ai commencé à avoir ce problème.
Avez-vous le même problème ?
Si vous avez migré la base de données avec une version ultérieure de Discourse, vous devrez supprimer et créer une nouvelle base de données pour obtenir la migration plus ancienne.
J’ai fait un nouveau clone propre et initialisé le développement en utilisant la version 2.8.0. il ne devrait pas y avoir encore de données.
J’ai fait une erreur lors de l’installation. Existe-t-il un moyen de tout désinstaller, puis de recommencer depuis le début ?
Bonjour, j’ai trouvé cette erreur étrange. Quelqu’un a-t-il déjà rencontré et résolu ce problème ? Merci d’avance !
Elle apparaît lorsque j’exécute d/boot_dev --init.
Migrating database...
rake aborted!
LoadError: cannot load such file -- /usr/local/lib/ruby/gems/2.7.0/gems/mail-2.8.0.rc1/lib/mail/indifferent_hash.rb
/src/lib/email.rb:3:in `<main>'
/src/app/jobs/scheduled/poll_mailbox.rb:10:in `<class:PollMailbox>'
/src/app/jobs/scheduled/poll_mailbox.rb:6:in `<module:Jobs>'
/src/app/jobs/scheduled/poll_mailbox.rb:5:in `<main>'
/src/config/initializers/100-sidekiq.rb:74:in `block (2 levels) in <main>'
/src/config/initializers/100-sidekiq.rb:73:in `glob'
/src/config/initializers/100-sidekiq.rb:73:in `block in <main>'
/src/config/environment.rb:7:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
J’ai reçu le même message d’erreur en exécutant d/boot_dev --init, j’ai essayé d/rake db:migrate RAILS_ENV=development, même erreur à nouveau :
rake aborted!
LoadError: cannot load such file -- /usr/local/lib/ruby/gems/2.7.0/gems/mail-2.8.0.rc1/lib/mail/indifferent_hash.rb
/src/lib/email.rb:3:in `<main>'
/src/app/jobs/scheduled/poll_mailbox.rb:10:in `<class:PollMailbox>'
/src/app/jobs/scheduled/poll_mailbox.rb:6:in `<module:Jobs>'
/src/app/jobs/scheduled/poll_mailbox.rb:5:in `<main>'
/src/config/initializers/100-sidekiq.rb:74:in `block (2 levels) in <main>'
/src/config/initializers/100-sidekiq.rb:73:in `glob'
/src/config/initializers/100-sidekiq.rb:73:in `block in <main>'
/src/config/environment.rb:7:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
J’ai rencontré ce problème aussi. Et je l’ai résolu en annulant ce commit :
Ça fonctionne parfaitement pour moi. Merci.