Правильно, на данный момент запустить Discourse в Docker на Mac с чипом M1 невозможно?
При запуске d/boot_dev --init я столкнулся с этой ошибкой:
ActiveRecord::NoDatabaseError: Не удалось найти вашу базу данных: discourse_development. Доступные конфигурации баз данных можно найти в файле config/database.yml. (ActiveRecord::NoDatabaseError)
Я не уверен, является ли это ошибкой в скрипте boot_dev или база данных discourse_development должна создаваться в другом месте. В любом случае, мне удалось исправить это с помощью следующего изменения:
diff --git a/bin/docker/boot_dev b/bin/docker/boot_dev
index 89fdcf6f65..0e9c5ce7d5 100755
--- a/bin/docker/boot_dev
+++ b/bin/docker/boot_dev
@@ -122,6 +122,7 @@ echo "pnpm install..."
if [ "${initialize}" = "initialize" ]; then
echo "Migrating database..."
+ "${SCRIPTPATH}/rake" db:create
"${SCRIPTPATH}/rake" db:migrate
RAILS_ENV=test "${SCRIPTPATH}/rake" db:migrate
После этого процесс настройки прошел успешно, следуя инструкциям в оригинальном посте.
Я недостаточно хорошо знаком с кодовой базой Discourse, чтобы знать, является ли это правильным исправлением, но я с радостью отправлю pull request, если это поможет. ![]()
Да, пожалуйста, создайте PR и оставьте ссылку здесь. Спасибо!
Готово!
Получилось запустить?
У меня возникла та же ошибка. Я выполнил docker rm -f /discourse_dev и снова запустил d/boot_dev --init, и на этот раз всё сработало.
Внимание:
Я только что заметил, что папка называется data/postgres, а не tmp/postgres, поэтому команда «сбросить базу данных» предназначена для удаления папки data ![]()
Я решил снова попробовать установку разработчика Docker, но постоянно получаю:
Причина:
PG::ConnectionBad: подключение к серверу через сокет "/var/run/postgresql/.s.PGSQL.5432" не удалось: нет такого файла или директории (PG::ConnectionBad)
Запущен ли сервер локально и принимает ли он подключения через этот сокет?
При этом я могу подтвердить, что служба запущена (и работает при использовании моей обычной «ручной» установки Discourse без Docker):
~/discourse_docker/discourse$ sudo service postgresql status
● postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Mon 2025-03-10 17:26:13 GMT; 6min ago
Process: 2052109 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 2052109 (code=exited, status=0/SUCCESS)
Mar 10 17:26:13 black-knight systemd[1]: Starting PostgreSQL RDBMS...
Mar 10 17:26:13 black-knight systemd[1]: Finished PostgreSQL RDBMS.
Есть ли у Docker Dev специфические и отличные требования к подключению к Postgres?
Я обнаружил, что уровень логирования по умолчанию :debug слишком подробный — SQL-запросы заглушают важные ошибки. В файле config/environments/development.rb можно задать переменную окружения DISCOURSE_DEV_LOG_LEVEL, но не уверен, что это можно сделать через скрипт d/rails.
В любом случае я временно прописал значение config.log_level = :info прямо в config/environments/development.rb, и это решило мою проблему. Возможно, это поможет и другим.
Я пытаюсь запустить это с помощью плагина Data Explorer, так как хочу протестировать автоматизацию DE.
Мне удалось запустить контейнер.
Затем я, так сказать, «установил» плагин, клонировав репозиторий и создав символическую ссылку на него в директории discourse/plugins (правильно ли я понял? Руководство могло бы быть гораздо яснее в этом пункте).
Я активировал плагин через интерфейс. Однако при попытке доступа к нему возникает ошибка.
В логах отображается только следующее:
Processing by DiscourseDataExplorer::QueryController#index as JSON
Completed 500 Internal Server Error in 62ms (ActiveRecord: 9.8ms (5 queries, 0 cached) | GC: 2.9ms)
Что мне делать с этим? Где подробности?
Вы выполнили миграции?
Мне не очень повезло с созданием символических ссылок на папку плагинов:
В результате я перешёл на обычную папку (см. мой последний комментарий в этой теме).
Похоже, что в настоящее время существуют несовместимости между томами Docker, наблюдателями файлов и символическими ссылками.
Спасибо за ответ, @Arkshine! Что должно было подсказать мне, что это нужно сделать? Я проверял руководство по установке плагина, но, полагаю, плагин, используемый в качестве примера в руководстве, не требует миграций?
Тем временем я не знаю, поможет ли это мне, так как я столкнулся с необходимостью добавить сертификат прокси моей компании в контейнер Docker, а раньше я мало работал с Docker ![]()
Какую проблему вы решаете? Установка в режиме разработки обычно предназначена для доступа только с localhost (то есть с вашего компьютера), на котором выполняется установка.
Или, возможно, вы пытаетесь отладить что-то, что требует сертификата, например, систему аутентификации?
Когда я попытался запустить свой образ вчера, система попросила загрузить гемы?
Установка гемов...
Получение индекса источников из https://rubygems.org/
Повторная попытка получения из-за ошибки (2/4): Bundler::Fetcher::CertificateFailureError Не удалось проверить SSL-сертификат для https://rubygems.org/.
Возможно, вы стали жертвой атаки «человек посередине», но скорее всего в вашей системе отсутствуют необходимые сертификаты удостоверяющего центра (CA) для проверки. Информацию об SSL-сертификатах OpenSSL см. по адресу https://railsapps.github.io/openssl-certificate-verify-failed.html.
Повторная попытка получения из-за ошибки (3/4): Bundler::Fetcher::CertificateFailureError Не удалось проверить SSL-сертификат для https://rubygems.org/.
Возможно, вы стали жертвой атаки «человек посередине», но скорее всего в вашей системе отсутствуют необходимые сертификаты удостоверяющего центра (CA) для проверки. Информацию об SSL-сертификатах OpenSSL см. по адресу https://railsapps.github.io/openssl-certificate-verify-failed.html.
Повторная попытка получения из-за ошибки (4/4): Bundler::Fetcher::CertificateFailureError Не удалось проверить SSL-сертификат для https://rubygems.org/.
Возможно, вы стали жертвой атаки «человек посередине», но скорее всего в вашей системе отсутствуют необходимые сертификаты удостоверяющего центра (CA) для проверки. Информацию об SSL-сертификатах OpenSSL см. по адресу https://railsapps.github.io/openssl-certificate-verify-failed.html.
Не удалось проверить SSL-сертификат для https://rubygems.org/.
Возможно, вы стали жертвой атаки «человек посередине», но скорее всего в вашей системе отсутствуют
необходимые сертификаты удостоверяющего центра (CA) для проверки. Информацию об SSL-сертификатах OpenSSL см.
по адресу https://railsapps.github.io/openssl-certificate-verify-failed.html.
Эй, так… что будет, если вы забудете пароль от учетной записи администратора? Придется переустанавливать всю среду разработки?
Письма не отправляются, поэтому сброс невозможен…
Вы можете использовать консоль, чтобы задать новый пароль или создать новую учетную запись администратора.
Существует способ войти под любым пользователем.
http://localhost:4200/session/any-username/become
Хорошо знать, что можно сбросить пароль через CLI.
Вы знаете, была ли когда-либо исправлена эта проблема?
Недостатки: Будет работать немного медленнее, чем нативная среда разработки на Ubuntu, и значительно медленнее, чем нативная установка на MacOS.
Почему это так, если все требования к спецификациям соблюдены?
При создании резервной копии в локальной среде разработки, настроенной по этой инструкции, возникла следующая ошибка:
[2026-01-29 05:32:35] [STARTED]
[2026-01-29 05:32:35] 'system' has started the backup!
[2026-01-29 05:32:35] Marking backup as running...
[2026-01-29 05:32:35] Making sure '/src/tmp/backups/default/2026-01-29-053235' exists...
[2026-01-29 05:32:35] Making sure '/src/public/backups/default' exists...
[2026-01-29 05:32:35] Updating metadata...
[2026-01-29 05:32:35] Dumping the public schema of the database...
[2026-01-29 05:32:35] pg_dump: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "postgres"
[2026-01-29 05:32:35] EXCEPTION: pg_dump failed
[2026-01-29 05:32:35] /src/lib/backup_restore/creator.rb:173:in `dump_public_schema'
/src/lib/backup_restore/creator.rb:36:in `run'
/src/lib/backup_restore.rb:13:in `backup!'
/src/app/jobs/regular/create_backup.rb:10:in `execute'
/src/app/jobs/base.rb:318:in `block (2 levels) in perform'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/rails_multisite-7.0.0/lib/rails_multisite/connection_management.rb:17:in `with_connection'
/src/app/jobs/base.rb:305:in `block in perform'
/src/app/jobs/base.rb:301:in `each'
/src/app/jobs/base.rb:301:in `perform'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:220:in `execute_job'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:185:in `block (4 levels) in process'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:180:in `traverse'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/src/lib/sidekiq/suppress_user_email_errors.rb:6:in `call'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/src/lib/sidekiq/discourse_event.rb:6:in `call'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/src/lib/sidekiq/pausable.rb:131:in `call'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job/interrupt_handler.rb:9:in `call'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:26:in `track'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:134:in `call'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:173:in `invoke'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:184:in `block (3 levels) in process'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:145:in `block (6 levels) in dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job_retry.rb:118:in `local'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:144:in `block (5 levels) in dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/config.rb:39:in `block in <class:Config>'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:139:in `block (4 levels) in dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:281:in `stats'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:134:in `block (3 levels) in dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job_logger.rb:15:in `call'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:133:in `block (2 levels) in dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job_retry.rb:85:in `global'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:132:in `block in dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job_logger.rb:40:in `prepare'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:131:in `dispatch'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:183:in `block (2 levels) in process'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `handle_interrupt'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `block in process'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `handle_interrupt'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `process'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:86:in `process_one'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:76:in `run'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/component.rb:10:in `watchdog'
/home/discourse/.bundle/gems/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/component.rb:19:in `block in safe_thread'
[2026-01-29 05:32:35] Cleaning stuff up...
[2026-01-29 05:32:35] Removing '.tar' leftovers...
[2026-01-29 05:32:35] Marking backup as finished...
[2026-01-29 05:32:35] Notifying 'system' of the end of the backup...
Что делать?