Install Discourse for development using Docker

Pareil, ça génère une erreur lors de la création du profil utilisateur administrateur. Ça fonctionne après avoir ajouté une étape yarn install avant de créer l’administrateur comme suggéré par @zergov. J’ai créé une PR pour l’ajouter : DEV: Yarn install to avoid error during initial migration seed by dsims · Pull Request #20866 · discourse/discourse · GitHub

Suivi :
Le mode Docker Rootless provoque les mêmes problèmes de mappage des permissions sous Linux que Docker Desktop. La solution de contournement que j’ai publiée fonctionnera également avec cette configuration.

Cependant, je n’ai pas une grande confiance dans cette solution de contournement, j’ai donc opté pour une installation Docker native sur mon système Linux, j’ai ajouté mon utilisateur non-sudo au groupe docker et maintenant les permissions sont correctement mappées à l’intérieur du conteneur et je peux exécuter des commandes docker sans sudo.

Merci @dsims, je viens de fusionner la PR :raised_hands:

1 « J'aime »

J’arrive jusque-là en utilisant podman (en essayant d’exécuter d/boot_dev --init) :

Installing gems...
Error response from daemon: environment variable "RAILS_ENV" badly formed, must be key=value

Je suppose que je devrai utiliser l’approche de l’environnement de développement natif car je n’installerai pas Docker sur mon bureau Fedora car il est cassé depuis des années (avec des trucs aléatoires comme le push qui ne fonctionne pas) et podman fonctionne tellement mieux sans aucun problème (pour les projets qui le prennent en charge).

erreur
erreur Impossible d’écrire le fichier « /src/app/assets/javascripts/discourse/yarn-error.log » : « EACCES: permission denied, open ‘/src/app/assets/javascripts/discourse/yarn-error.log’ »
erreur Une erreur inattendue s’est produite : « EACCES: permission denied, mkdir ‘/src/app/assets/javascripts/node_modules’ ».

Pourquoi est-ce que j’obtiens cette erreur en suivant d/boot_dev --init ?

3.0\" a une dépendance pair incorrecte \"@uppy/core@^3.2.1\".
[4/4] Construction de nouveaux paquets...
$ ../run-patch-package
patch-package 8.0.0
Application des correctifs...
@ember/jquery@2.0.0 ✔
babel-plugin-debug-macros@0.3.4 ✔
content-tag@1.1.1 ✔
ember-source@3.28.12 ✔
ember-this-fallback@0.3.1 (1 initial) ✔
ember-this-fallback@0.3.1 (2 thèmes) ✔
virtual-dom@2.1.1 ✔
Terminé en 101,54 s.
Migration de la base de données...
rake aborted!
Discourse::Utils::CommandError: /src/lib/discourse.rb:138:in `exec': node:internal/modules/cjs/loader:1080
  throw err;
  ^

Error: Cannot find module 'esbuild'
Require stack:
- /src/app/assets/javascripts/theme-transpiler/build.js
    at Module._resolveFilename (node:internal/modules/cjs/loader:1077:15)
    at Module._load (node:internal/modules/cjs/loader:922:27)
    at Module.require (node:internal/modules/cjs/loader:1143:19)
    at require (node:internal/modules/cjs/helpers:121:18)
    at Object.<anonymous> (/src/app/assets/javascripts/theme-transpiler/build.js:3:17)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
    at Module.load (node:internal/modules/cjs/loader:1119:32)
    at Module._load (node:internal/modules/cjs/loader:960:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/src/app/assets/javascripts/theme-transpiler/build.js' ]
}

Node.js v18.17.1
/src/lib/discourse.rb:172:in `execute_command'
/src/lib/discourse.rb:138:in `exec'
/src/lib/discourse.rb:34:in `execute_command'
/src/lib/discourse_js_processor.rb:119:in `build_theme_transpiler'
/src/lib/tasks/assets.rake:313:in `block in <main>'
Tasks: TOP => db:migrate => assets:precompile:theme_transpiler
(See full trace by running task with --trace)

Possiblement lié à ceci : Install Discourse for development using Docker - #239 by zergov

Peut-être essayer d’aller dans le répertoire /var/www/discourse et d’exécuter :

yarn install

Quelqu’un a-t-il des benchmarks à ce sujet ?

J’ai cherché dans ce sujet mais je n’ai pas trouvé cela spécifiquement. Je me demande si quelqu’un a essayé l’installation normale et celle avec Docker pour comparer :slight_smile:

Quelques conseils pour ceux qui essaient d’utiliser la procédure décrite dans ce sujet :

  1. L’étape 1 n’a pas fonctionné pour moi. Afin d’installer Docker, j’ai dû utiliser le « script de commodité » décrit ici : Ubuntu | Docker Docs

  2. Vous avez besoin de sudo pour toutes les commandes

  3. Il semble manquer une étape 3 : vous devez créer un compte utilisateur administrateur. Pour créer un nouvel administrateur, exécutez la commande suivante : sudo d/rails admin:create

  4. Comme indiqué dans le sujet, si vous utilisez WSL, les liens symboliques vers le système de fichiers Windows ne fonctionneront pas. Si vous essayez quand même, vous casserez l’installation et vous vous retrouverez avec des gems manquantes. Pour récupérer vos gems, exécutez : sudo d/bundle install

2 « J'aime »

Bonjour.

J’essaie d’installer le développement sur un Debian 12.

Lorsque j’exécute la commande…

d/boot_dev --init

… après un moment, l’erreur suivante apparaît :

$ ../run-patch-package
patch-package 8.0.0
Applying patches...
@ember/jquery@2.0.0 ✔
babel-plugin-debug-macros@0.3.4 ✔
content-tag@1.1.2 ✔
ember-source@3.28.12 ✔
ember-this-fallback@0.4.0 (1 deprecation-name) ✔
ember-this-fallback@0.4.0 (2 themes) ✔
virtual-dom@2.1.1 ✔
Done in 70.39s.
Migrating database...
rake aborted!
Discourse::Utils::CommandError: /src/lib/discourse.rb:138:in `exec': node:internal/modules/cjs/loader:1080
  throw err;
  ^

Error: Cannot find module 'esbuild'
Require stack:
- /src/app/assets/javascripts/theme-transpiler/build.js
    at Module._resolveFilename (node:internal/modules/cjs/loader:1077:15)
    at Module._load (node:internal/modules/cjs/loader:922:27)
    at Module.require (node:internal/modules/cjs/loader:1143:19)
    at require (node:internal/modules/cjs/helpers:121:18)
    at Object.<anonymous> (/src/app/assets/javascripts/theme-transpiler/build.js:3:17)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
    at Module.load (node:internal/modules/cjs/loader:1119:32)
    at Module._load (node:internal/modules/cjs/loader:960:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/src/app/assets/javascripts/theme-transpiler/build.js' ]
}

Node.js v18.17.1
/src/lib/discourse.rb:172:in `execute_command'
/src/lib/discourse.rb:138:in `exec'
/src/lib/discourse.rb:34:in `execute_command'
/src/lib/discourse_js_processor.rb:119:in `build_theme_transpiler'
/src/lib/tasks/assets.rake:313:in `block in <main>'
Tasks: TOP => db:migrate => assets:precompile:theme_transpiler
(See full trace by running task with --trace)

Est-ce que je fais quelque chose de mal ?

1 « J'aime »
yarn install # ceci réinstallera tout, y compris esbuild
# suppression du conteneur précédemment installé avec erreur
docker stop discourse_dev
docker rm discourse_dev
d/boot_dev --init
# Il vous sera demandé de saisir l'e-mail de l'administrateur en cas de succès.

Bonjour. Après avoir placé un lien symbolique dans le répertoire discourse/plugin, puis redémarré :

$ d/rails s

J’obtiens l’erreur suivante :

```GitHub - rails/sprockets: Rack-based asset packaging system (at 3.x@f4d3dae) n’est pas encore extrait. Exécutez d’abord `bundle install````

« Bundle install » ne résout pas le problème. J’ai essayé plusieurs choses, mais rien ne semble résoudre cela. Si je supprime le lien symbolique dans le répertoire des plugins et redémarre, tout refonctionne normalement. J’ai essayé avec différents plugins officiels dont je sais qu’ils fonctionnent sur d’autres installations de discourse.

Quelqu’un sait pourquoi cela se produit ?

1 « J'aime »

Pouvez-vous essayer d/bundle install à la place ?

1 « J'aime »

Je peux exécuter d/bundle install, cela fonctionne et je peux ensuite tout démarrer, mais le plugin n’apparaît pas comme installé dans discourse.

Je lance donc d/shutdown_dev; d/boot_dev mais après cela, le même ancien message d’erreur réapparaît https://github.com/rails/sprockets (at 3.x@f4d3dae) is not yet checked out. Run `bundle install` first

vOv

Je l’ai amélioré dans

Il est vraiment déroutant de devoir exécuter d/bundle install manuellement à chaque fois que vous démarrez l’environnement de développement. En attendant, vous devrez malheureusement exécuter d/bundle install à chaque fois que vous exécutez d/boot_dev.

3 « J'aime »

Je continue de recevoir cette erreur.

error Impossible d’écrire le fichier « /src/app/assets/javascripts/discourse/yarn-error.log » : « EACCES: permission denied, open ‘/src/app/assets/javascripts/discourse/yarn-error.log’ »

error Une erreur inattendue s’est produite : « EACCES: permission denied, mkdir ‘/src/app/assets/javascripts/node_modules’ ».

hmmm :thinking: Je pense que c’est le même que ici - je ne trouve pas où il a été résolu cependant.

1 « J'aime »

Exécutez-vous ceci en tant qu’utilisateur non root sans sudo ?

C’était l’utilisateur root.

J’essaie d’installer Discourse Development dans un WSL Docker - je suis arrivé à l’écran de félicitations, mais sans compte administrateur, je suis bloqué.

Lorsque j’essaie d’exécuter d/rails admin:create, j’obtiens l’erreur stat bin/rails: no such file or directory: unknown.

Qu’est-ce qui me manque ?

Merci