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モードは、Docker Desktopと同様のパーミッションマッピングの問題をLinuxで引き起こします。私が投稿した回避策は、この構成でも機能します。

ただし、回避策にはあまり自信がないため、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

おそらく、ネイティブ開発環境アプローチを使用する必要があるでしょう。Docker は長年壊れており(プッシュなどがランダムに機能しないなど)、Fedora デスクトップにインストールするつもりはありません。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
(See full trace by running task with --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

以下のエラーが発生します。

https://github.com/rails/sprockets (at 3.x@f4d3dae) is not yet checked out. Run `bundle install` first

「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: permission denied, open ‘/src/app/assets/javascripts/discourse/yarn-error.log’"

error 予期しないエラーが発生しました: "EACCES: permission denied, mkdir ‘/src/app/assets/javascripts/node_modules’"

うーん :thinking: これはこちらと同じものだと思います。解決された場所は見つかりません。

「いいね!」 1

sudoなしで非rootユーザーとして実行していますか?

ルートユーザーでした。

WSL Docker で Discourse Development をインストールしようとしています。お祝いの画面までは到達できましたが、管理者アカウントがないため行き詰まっています。

d/rails admin:create を実行しようとすると、「stat bin/rails: no such file or directory: unknown」というエラーが発生します。

何が足りないのでしょうか?

よろしくお願いします。