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

Дополнительно:
Режим Rootless в Docker вызывает те же проблемы с сопоставлением прав доступа на Linux, что и Docker Desktop. Предложенное мной решение также работает в этой конфигурации.

Однако я не особо уверен в этом решении, поэтому перешел к нативной установке Docker на своей системе Linux, добавил своего пользователя без прав sudo в группу docker, и теперь права доступа корректно сопоставляются внутри контейнера, а команды Docker можно выполнять без sudo.

Спасибо @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: отказано в доступе, open ‘/src/app/assets/javascripts/discourse/yarn-error.log’”
ошибка Произошла непредвиденная ошибка: “EACCES: отказано в доступе, mkdir ‘/src/app/assets/javascripts/node_modules’”.

Почему я получаю эту ошибку после выполнения d/boot_dev --init?

3.0" has incorrect peer dependency "@uppy/core@^3.2.1".
[4/4] Building fresh packages...
$ ../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.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 ✔
Done in 101.54s.
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)

Возможно, это связано с этим: 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 не будут работать. Если вы попытаетесь это сделать, установка будет нарушена, и вы столкнётесь с отсутствующими гемами. Чтобы вернуть гемы, выполните: sudo d/bundle install

2 лайка

Здравствуйте.

Я пытаюсь установить окружение для разработки на Debian 12.

При запуске команды…

d/boot_dev --init

… через некоторое время появляется следующая ошибка:

$ ../run-patch-package
patch-package 8.0.0
Применение патчей...
@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 ✔
Готово за 70.39с.
Миграция базы данных...
rake aborted!
Discourse::Utils::CommandError: /src/lib/discourse.rb:138:in `exec': node:internal/modules/cjs/loader:1080
  throw err;
  ^

Ошибка: Не удается найти модуль 'esbuild'
Стек вызовов:
- /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>'
Задачи: TOP => db:migrate => assets:precompile:theme_transpiler
(Полный трассировочный отчет можно получить, запустив задачу с флагом --trace)```

Неужели я что-то делаю не так?
1 лайк
yarn install # это переустановит всё, включая esbuild
# удаляем ранее ошибочно установленный контейнер
docker stop discourse_dev
docker rm discourse_dev
/boot_dev --init
# Если всё прошло успешно, система запросит ввод адреса электронной почты администратора.

Здравствуйте. После создания символической ссылки в директории discourse/plugin и последующей перезапуска:

$ d/rails s

я получаю следующую ошибку:

```GitHub - rails/sprockets: Rack-based asset packaging system · GitHub (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/bundle install каждый раз, когда вы выполняете d/boot_dev.

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.

Я пытаюсь установить Discourse Development в WSL с использованием Docker — дошёл до экрана с поздравлениями, но без учётной записи администратора я застрял.

При попытке выполнить d/rails admin:create я получаю ошибку stat bin/rails: no such file or directory: unknown.

Что я упускаю?

Спасибо