Install Discourse for development using Docker

同样,在烘焙管理员用户配置文件时出错。在创建管理员之前添加一个 yarn install 步骤(如 @zergov此处 建议的那样)后,它就可以工作了。我已经创建了一个 PR 来添加它:DEV: Yarn install to avoid error during initial migration seed by dsims · Pull Request #20866 · discourse/discourse · GitHub

后续:
Docker Rootless 模式 在 Linux 上会导致与 Docker Desktop 相同的权限映射问题。我发布的解决方法也适用于此配置。

不过,我对这个解决方法不太放心,所以我切换到了 Linux 系统上的原生 Docker 安装,将我的非 sudo 用户添加到 docker 组,现在容器内的权限映射正确,并且我可以在没有 sudo 的情况下运行 docker 命令。

谢谢 @dsims,我刚刚合并了 PR :raised_hands:

1 个赞

当我使用 podman(尝试运行 d/boot_dev --init)时,会走到这一步:

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

我猜我需要使用原生开发环境方法,因为我不会在我的 Fedora 桌面安装 docker,因为它多年来一直存在严重问题(例如推送等功能随机失效),而 podman 在没有任何麻烦的情况下运行得更好(对于支持它的项目)。

错误
错误 无法写入文件“/src/app/assets/javascripts/discourse/yarn-error.log”:“EACCES:权限被拒绝,打开 ‘/src/app/assets/javascripts/discourse/yarn-error.log’”
错误 发生意外错误:“EACCES:权限被拒绝,创建目录 ‘/src/app/assets/javascripts/node_modules’”。

在执行 d/boot_dev --init 后,我收到此错误,这是什么原因?

3.0" 存在不正确的对等依赖项 "@uppy/core@^3.2.1"。
[4/4] 正在构建新包...
$ ../run-patch-package
patch-package 8.0.0
正在应用补丁...
@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 themes) ✔
virtual-dom@2.1.1 ✔
101.54 秒内完成。
正在迁移数据库...
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
(在运行任务时使用 --trace 查看完整跟踪)

可能与此相关:Install Discourse for development using Docker - #239 by zergov

也许可以尝试进入 /var/www/discourse 目录并运行:

yarn install

有人有相关的基准测试吗?

我在该主题中搜索过,但没有找到具体内容。我想知道是否有人尝试过普通安装和 Docker 安装来比较它们 :slight_smile:

以下是一些使用此主题中描述的程序的提示:

  1. 第 1 步对我不起作用。为了安装 Docker,我必须使用此处描述的“便捷脚本”:Ubuntu | Docker Docs

  2. 所有命令都需要 sudo

  3. 似乎缺少第 3 步:您需要创建一个管理员用户帐户。要创建新管理员,请运行以下命令:sudo d/rails admin:create

  4. 如主题所述,如果您使用 WSL,指向 Windows 文件系统的符号链接将无法正常工作。如果您尝试这样做,您将破坏安装并最终导致丢失 gem。要恢复您的 gem,请运行:sudo d/bundle install

2 个赞

你好。

我正在尝试在 Debian 12 上安装开发环境。

当我运行命令时……

d/boot_dev --init

……过了一会儿,出现以下错误:

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

我是否做错了什么?

1 个赞
yarn install # 这将重新安装所有内容,包括 esbuild
# 移除先前安装失败的容器
docker stop discourse_dev
docker rm discourse_dev
d/boot_dev --init
# 成功后会提示输入管理员邮箱。

你好。在 discourse/plugin 目录中放置了一个符号链接并重启后:

$ d/rails s

我遇到了以下错误:

```GitHub - rails/sprockets: Rack-based asset packaging system (at 3.x@f4d3dae) 尚未检出。请先运行 `bundle install````

“Bundle install”未能解决问题。我尝试了许多方法,但似乎都无法解决。如果我删除插件目录中的符号链接并重启,一切都会恢复正常。我已经尝试过使用其他 discourse 安装中已知可以正常工作的不同官方插件。

有人知道为什么会这样吗?

1 个赞

您能试试 d/bundle install 吗?

1 个赞

我可以运行 d/bundle install,这可以正常工作,然后我就可以启动所有东西,但插件似乎没有安装在 discourse 中。

所以我运行 d/shutdown_dev; d/boot_dev,但在那之后它再次给出旧的错误消息 https://github.com/rails/sprockets (at 3.x@f4d3dae) is not yet checked out. Run `bundle install` first

vOv

我在以下位置进行了改进:

每次启动开发环境时都必须手动运行 d/bundle install 确实令人困惑。在此期间,您将不得不每次运行 d/boot_dev 时都运行 d/bundle install

3 个赞

我一直收到这个错误。

error 无法写入文件“/src/app/assets/javascripts/discourse/yarn-error.log”:“EACCES:权限被拒绝,打开’/src/app/assets/javascripts/discourse/yarn-error.log’”

error 发生意外错误:“EACCES:权限被拒绝,创建目录’/src/app/assets/javascripts/node_modules’”。

:thinking: 我认为这和这里是同一个问题 - 但找不到在哪里解决了。

1 个赞

您是作为非 root 用户在没有 sudo 的情况下运行此命令吗?

那是 root 用户。

我正在尝试在 WSL Docker 中安装 Discourse Development - 我已经到了祝贺屏幕,但没有管理员账户,我卡住了。

当我尝试运行 d/rails admin:create 时,我收到错误 stat bin/rails: no such file or directory: unknown

我错过了什么?

谢谢