Install Discourse for development using Docker

Lo mismo, da error al intentar crear el perfil de usuario administrador. Funciona después de añadir un paso de yarn install antes de crear el administrador como se sugiere por @zergov. He creado una PR para añadirlo: DEV: Yarn install to avoid error during initial migration seed by dsims · Pull Request #20866 · discourse/discourse · GitHub

Seguimiento:
El modo raíz de Docker causa los mismos problemas de mapeo de permisos en Linux que Docker Desktop. La solución provisional que publiqué también funcionará con esta configuración.

Sin embargo, no tengo mucha confianza en la solución provisional, así que cambié a una instalación nativa de Docker en mi sistema Linux, agregué mi usuario no sudo al grupo docker y ahora los permisos se mapean correctamente dentro del contenedor y puedo ejecutar comandos de docker sin sudo.

Gracias @dsims, acabo de fusionar la PR :raised_hands:

1 me gusta

Llego hasta aquí cuando uso podman (intentando ejecutar d/boot_dev --init):

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

Supongo que necesitaré usar el enfoque del entorno de desarrollo nativo, ya que no voy a instalar Docker en mi escritorio Fedora, que ha estado realmente roto durante años (con cosas aleatorias como que el push no funciona) y podman funciona mucho mejor sin ningún problema (para proyectos que lo soportan).

error
error No se pudo escribir el archivo “/src/app/assets/javascripts/discourse/yarn-error.log”: “EACCES: permission denied, open ‘/src/app/assets/javascripts/discourse/yarn-error.log’”
error Ocurrió un error inesperado: “EACCES: permission denied, mkdir ‘/src/app/assets/javascripts/node_modules’”.

¿Por qué obtengo este error después de d/boot_dev --init?

3.0" tiene una dependencia de igual incorrecta "@uppy/core@^3.2.1".
[4/4] Creando paquetes nuevos...
$ ../run-patch-package
patch-package 8.0.0
Aplicando parches...
@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 inicial) ✔
ember-this-fallback@0.3.1 (2 temas) ✔
virtual-dom@2.1.1 ✔
Completado en 101.54s.
Migrando base de datos...
rake abortó!
Discourse::Utils::CommandError: /src/lib/discourse.rb:138:in `exec': node:internal/modules/cjs/loader:1080
  throw err;
  ^

Error: No se puede encontrar el módulo 'esbuild'
Pila de requisitos:
- /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
(Ver traza completa ejecutando la tarea con --trace)

Posiblemente relacionado con esto: Install Discourse for development using Docker - #239 by zergov

Quizás intenta ir al directorio /var/www/discourse y ejecutar:

yarn install

¿Alguien tiene algunos puntos de referencia al respecto?

Busqué en este tema pero no encontré esto específicamente. Me pregunto si alguien probó la instalación normal y la de docker para comparar entre ellas :slight_smile:

Algunas pistas para quienes intentan usar el procedimiento descrito en este tema:

  1. El paso 1 no me funcionó. Para instalar Docker, tuve que usar el “script de conveniencia” descrito aquí: Ubuntu | Docker Docs

  2. Necesitas sudo para todos los comandos

  3. Parece que falta un paso 3: necesitas crear una cuenta de usuario administrador. Para crear un nuevo administrador, ejecuta el siguiente comando: sudo d/rails admin:create

  4. Como se indica en el tema, si usas WSL, los enlaces simbólicos al sistema de archivos de Windows no funcionarán. Si lo intentas de todos modos, romperás la instalación y terminarás con gemas faltantes. Para recuperar tus gemas, ejecuta: sudo d/bundle install

2 Me gusta

Hola.

Estoy intentando instalar el entorno de desarrollo en Debian 12.

Cuando ejecuto el comando…

d/boot_dev --init

…después de un rato aparece el siguiente error:

$ ../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)

¿Estoy haciendo algo mal?

1 me gusta
yarn install # esto reinstalará todo, incluido esbuild
# eliminando el contenedor instalado previamente con error
docker stop discourse_dev
docker rm discourse_dev
d/boot_dev --init
# Te pedirá que introduzcas el correo electrónico del administrador si tiene éxito.

Hola. Después de colocar un enlace simbólico en el directorio discourse/plugin y luego reiniciar:

$ d/rails s

Obtengo el siguiente error:

https://github.com/rails/sprockets (at 3.x@f4d3dae) aún no se ha extraído. Ejecuta `bundle install` primero

“Bundle install” no resuelve el problema. He intentado varias cosas, pero nada parece solucionarlo. Si elimino el enlace simbólico en el directorio de plugins y reinicio, todo vuelve a funcionar correctamente. Lo he intentado con diferentes plugins oficiales que sé que funcionan en otras instalaciones de discourse.

¿Alguien sabe por qué sucede esto?

1 me gusta

¿Puedes intentar d/bundle install en su lugar?

1 me gusta

Puedo ejecutar d/bundle install, eso funciona y luego puedo iniciar todo, pero el plugin no aparece instalado en discourse.

Entonces ejecuto d/shutdown_dev; d/boot_dev pero después de eso da el mismo mensaje de error de antes https://github.com/rails/sprockets (at 3.x@f4d3dae) is not yet checked out. Run `bundle install` first

vOv

Lo he mejorado en

Definitivamente es confuso tener que ejecutar d/bundle install manualmente cada vez que inicias el entorno de desarrollo. Mientras tanto, lamentablemente tendrás que ejecutar d/bundle install cada vez que ejecutes d/boot_dev.

3 Me gusta

Sigo recibiendo este error.

error No se pudo escribir el archivo “/src/app/assets/javascripts/discourse/yarn-error.log”: “EACCES: permission denied, open ‘/src/app/assets/javascripts/discourse/yarn-error.log’”

error Ocurrió un error inesperado: “EACCES: permission denied, mkdir ‘/src/app/assets/javascripts/node_modules’”.

hmmm :thinking: Creo que es el mismo que aquí - no encuentro dónde se resolvió.

1 me gusta

¿Estás ejecutando esto como un usuario no root sin sudo?

Era el usuario root.

Estoy intentando instalar Discourse Development en un WSL Docker. He llegado hasta la pantalla de felicitación, pero sin una cuenta de administrador estoy atascado.

Cuando intento ejecutar d/rails admin:create, obtengo el error stat bin/rails: no such file or directory: unknown.

¿Qué me falta?

Gracias.