Install Discourse for development using Docker

レポートありがとうございます @Aubrey @topological @FlyingCat。Discourse コアでそのコミットを元に戻しました。

@cvx が問題の原因を特定し、アップストリームの mail gem でイシューをオープンしました。

それが解決したら、公式 gem に戻します。

「いいね!」 6

d/boot_dev --init で別のエラーが発生しています。これは Ubuntu 22.04 のクリーンインストールで、OP のガイドに従っています。

編集:解決済み – ルートとして実行すると、まったく受け付けません。最初から通常のユーザーであることを確認してください。

# d/boot_dev --init
Using source in: /root/dev/discourse
Using data in:   /root/dev/discourse/data/postgres
release: Pulling from discourse/discourse_dev
214ca5fb9032: Pull complete 
37cd9d4cd9e6: Pull complete 
9b38588fc778: Pull complete 
cb13139046fe: Pull complete 
1243de3fe752: Pull complete 
ec3e5331f9b3: Pull complete 
0fab0821518d: Pull complete 
9b5e686bba91: Pull complete 
428573951790: Pull complete 
38013f421bac: Pull complete 
733b166992df: Pull complete 
1fb3d7e57e63: Pull complete 
f76a1270a527: Pull complete 
133993b18ebe: Pull complete 
226b3b82cab1: Pull complete 
Digest: sha256:0a08c79cd8997e3bfac037625f2f5b2f26a64564113116b8c18969484b00a8ce
Status: Downloaded newer image for discourse/discourse_dev:release
docker.io/discourse/discourse_dev:release
439f53088cc4aab844a8864b779056a576c731ba4723d4cf8b23d0e97c8ae79c
Installing gems...
^TFollowing files may not be writable, so sudo is needed:
  /usr/local/bin
  /usr/local/lib/ruby/gems/2.7.0
  /usr/local/lib/ruby/gems/2.7.0/build_info
  /usr/local/lib/ruby/gems/2.7.0/cache
  /usr/local/lib/ruby/gems/2.7.0/doc
  /usr/local/lib/ruby/gems/2.7.0/extensions
  /usr/local/lib/ruby/gems/2.7.0/gems
  /usr/local/lib/ruby/gems/2.7.0/plugins
  /usr/local/lib/ruby/gems/2.7.0/specifications
Using rake 13.0.6
Using concurrent-ruby 1.1.10
Using i18n 1.10.0
Using minitest 5.15.0
Using tzinfo 2.0.4
Using activesupport 7.0.3
Using builder 3.2.4
Using erubi 1.10.0
Using racc 1.6.0
Using nokogiri 1.13.6 (x86_64-linux)
Using rails-dom-testing 2.0.3
Using crass 1.0.6
Using loofah 2.18.0
Using rails-html-sanitizer 1.4.2
Using actionview 7.0.3
Using rack 2.2.3
Using rack-test 1.1.0
Using actionpack 7.0.3
Using globalid 1.0.0
Using activejob 7.0.3
Using mini_mime 1.1.2
Using mail 2.8.0.edge from https://github.com/discourse/mail.git
Using digest 3.1.0
Using timeout 0.2.0
Using net-protocol 0.1.3
Using strscan 3.0.3
Using net-imap 0.2.3
Using net-pop 0.1.1
Using net-smtp 0.3.1
Using actionmailer 7.0.3
Using actionview_precompiler 0.2.3
Using activemodel 7.0.3
Using active_model_serializers 0.8.4
Using activerecord 7.0.3
Using public_suffix 4.0.7
Using addressable 2.8.0
Using annotate 3.2.0
Using ast 2.4.2
Using aws-eventstream 1.2.0
Using aws-partitions 1.583.0
Using aws-sigv4 1.5.0
Using jmespath 1.6.1
Using aws-sdk-core 3.130.2
Using aws-sdk-kms 1.56.0
Using aws-sdk-s3 1.114.0
Using aws-sdk-sns 1.53.0
Using ember-source 2.18.2
Using execjs 2.8.1
Using barber 0.12.2
Using coderay 1.1.3
Using better_errors 2.9.1
Using debug_inspector 1.1.0
Using binding_of_caller 1.0.0
Using msgpack 1.5.1
Using bootsnap 1.11.1
Using uniform_notifier 1.16.0
Using bullet 7.0.1
Using bundler 2.3.13
Using byebug 11.1.3
Using cbor 0.5.9.6
Using certified 1.0.0
Using chunky_png 1.4.0
Using colored2 3.1.2
Using connection_pool 2.2.5
Using ipaddr 1.2.4
Using openssl 2.2.1
Using openssl-signature_algorithm 1.1.1
Using cose 1.2.0
Using cppjieba_rb 0.4.2
Using rexml 3.2.5
Using crack 0.4.5
Using css_parser 1.11.0
Using diff-lcs 1.5.0
Using diffy 3.4.0
Using ember-data-source 3.0.2
Using sprockets 3.7.2
Using ember-handlebars-template 0.8.0
Using method_source 1.0.0
Using thor 1.2.1
Using zeitwerk 2.5.4
Using railties 7.0.3
Using jquery-rails 4.4.0
Using discourse-ember-rails 0.18.6
Using discourse-ember-source 3.12.2.3
Using discourse-fonts 0.0.9
Using faker 2.21.0
Using literate_randomizer 0.4.0
Using discourse_dev_assets 0.0.4
Using docile 1.4.0
Using regexp_parser 2.4.0
Using ecma-re-validator 0.4.0
Using email_reply_trimmer 0.1.13
Using excon 0.92.3
Using exifr 1.3.9
Using fabrication 2.28.0
Using fakeweb 1.3.0
Using faraday-em_http 1.0.0
Using faraday-em_synchrony 1.0.0
Using faraday-excon 1.1.0
Using faraday-httpclient 1.0.1
Using multipart-post 2.1.1
Using faraday-multipart 1.0.3
Using faraday-net_http 1.0.1
Using faraday-net_http_persistent 1.2.0
Using faraday-patron 1.0.0
Using faraday-rack 1.0.0
Using faraday-retry 1.0.3
Using ruby2_keywords 0.0.5
Using faraday 1.10.0
Using fast_blank 1.0.1
Using fast_xs 0.8.0
Using fastimage 2.2.6
Using ffi 1.15.5
Using fspath 3.1.2
Using gc_tracer 1.5.1
Using guess_html_encoding 0.0.11
Using hana 1.3.7
Using hashdiff 1.0.1
Using hashie 5.0.0
Using highline 2.0.3
Using hkdf 0.3.0
Using htmlentities 4.3.4
Using http_accept_language 2.1.1
Using image_size 3.0.1
Using in_threads 1.6.0
Using progress 3.6.0
Using image_optim 0.31.1
Using json 2.6.1
Using json-schema 2.8.1
Using uri_template 0.7.0
Using json_schemer 0.2.21
Using jwt 2.3.0
Using kgio 2.11.4
Using libv8-node 16.10.0.0 (x86_64-linux)
Using rb-fsevent 0.11.1
Using rb-inotify 0.10.1
Using listen 3.7.1
Using request_store 1.5.1
Using lograge 0.12.0
Using logstash-event 1.2.02
Using logstash-logger 0.26.1
Using logster 2.11.2
Using lru_redux 1.1.0
Using lz4-ruby 0.3.3
Using maxminddb 0.1.22
Using memory_profiler 1.0.0
Using message_bus 4.2.0
Using mini_racer 0.6.2
Using redis 4.5.1
Using sidekiq 6.4.2
Using mini_scheduler 0.13.0
Using mini_sql 1.4.0
Using mini_suffix 0.3.3
Using mocha 1.14.0
Using multi_json 1.15.0
Using multi_xml 0.6.0
Using mustache 1.1.1
Using uri 0.11.0
Using net-http 0.2.2
Using nio4r 2.5.8
Using oauth 0.5.10
Using oauth2 1.4.7
Using oj 3.13.11
Using omniauth 1.9.1
Using omniauth-oauth2 1.7.2
Using omniauth-facebook 9.0.0
Using omniauth-github 1.4.0
Using omniauth-google-oauth2 0.8.2
Using omniauth-oauth 1.2.0
Using omniauth-twitter 1.4.0
Using optimist 3.0.1
Using parallel 1.22.1
Using parallel_tests 3.8.1
Using parser 3.1.2.0
Using pg 1.3.5
Using pry 0.13.1
Using pry-byebug 3.9.0
Using pry-rails 0.3.9
Using puma 5.6.4
Using r2 0.2.7
Using rack-mini-profiler 3.0.0
Using rack-protection 2.2.0
Using rails_failover 0.8.1
Using rails_multisite 4.0.1
Using rainbow 3.1.1
Using raindrops 0.20.0
Using rbtrace 0.4.14
Using rchardet 1.8.0
Using redis-namespace 1.8.2
Using rinku 2.0.6
Using rotp 6.2.0
Using rqrcode_core 1.2.0
Using rqrcode 2.1.1
Using rspec-support 3.11.0
Using rspec-core 3.11.0
Using rspec-expectations 3.11.0
Using rspec-mocks 3.11.1
Using rspec 3.11.0
Using rspec-html-matchers 0.9.4
Using rspec-rails 5.1.2
Using rss 0.2.9
Using rswag-specs 2.5.1
Using rubocop-ast 1.18.0
Using ruby-progressbar 1.11.0
Using unicode-display_width 2.1.0
Using rubocop 1.29.1
Using rubocop-rspec 2.10.0
Using rubocop-discourse 2.5.0
Using ruby-prof 1.4.3
Using ruby-readability 0.7.0
Using rubyzip 2.3.2
Using sanitize 6.0.0
Using sassc 2.0.1
Using sprockets-rails 3.4.2
Using tilt 2.0.10
Using sassc-rails 2.1.2
Using seed-fu 2.3.9
Using shoulda-matchers 5.1.0
Using simplecov-html 0.12.3
Using simplecov_json_formatter 0.1.4
Using simplecov 0.21.2
Using sshkey 2.0.0
Using stackprof 0.2.19
Using test-prof 1.0.9
Using uglifier 4.2.0
Using unf_ext 0.0.8.1
Using unf 0.1.4
Using unicorn 6.1.0
Using webmock 3.14.0
Using webpush 1.1.0
Using xorcist 1.1.2
Using yaml-lint 0.0.10
Bundle complete! 126 Gemfile dependencies, 232 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
1 installed gem you directly depend on is looking for funding.
  Run `bundle fund` for details
Migrating database...
rake aborted!
Errno::EACCES: Permission denied @ dir_s_mkdir - /src/app/assets/javascripts/plugins
/src/lib/plugin/instance.rb:449:in `ensure_directory'
/src/lib/plugin/instance.rb:721:in `activate!'
/src/lib/discourse.rb:279:in `block in activate_plugins!'
/src/lib/discourse.rb:276:in `each'
/src/lib/discourse.rb:276:in `activate_plugins!'
/src/config/application.rb:222:in `block in <class:Application>'
/src/lib/plugin.rb:6:in `initialization_guard'
/src/config/application.rb:221:in `<class:Application>'
/src/config/application.rb:81:in `<module:Discourse>'
/src/config/application.rb:80:in `<main>'
/src/Rakefile:7:in `<main>'
(See full trace by running task with --trace)
# d/rails s
Traceback (most recent call last):
	8: from /src/bin/unicorn:70:in `<main>'
	7: from /src/bin/unicorn:38:in `ensure_cache_clean!'
	6: from /usr/local/lib/ruby/2.7.0/fileutils.rb:211:in `mkdir_p'
	5: from /usr/local/lib/ruby/2.7.0/fileutils.rb:211:in `each'
	4: from /usr/local/lib/ruby/2.7.0/fileutils.rb:226:in `block in mkdir_p'
	3: from /usr/local/lib/ruby/2.7.0/fileutils.rb:226:in `reverse_each'
	2: from /usr/local/lib/ruby/2.7.0/fileutils.rb:228:in `block (2 levels) in mkdir_p'
	1: from /usr/local/lib/ruby/2.7.0/fileutils.rb:250:in `fu_mkdir'
/usr/local/lib/ruby/2.7.0/fileutils.rb:250:in `mkdir': Permission denied @ dir_s_mkdir - /src/tmp (Errno::EACCES)
「いいね!」 1


開発用にCORSを無効にするにはどうすればよいですか?
http://localhost:3001 のオリジンからCORSリクエストを送信したいのですが、cors_origin 設定が効果がありません。Access-Control-Allow-Origin ヘッダーが表示されません。
やはり大丈夫です。解決しました。開発モードでは enable_cors 設定が無視されているようです。

そのため、CORSミドルウェアは決してインストールされません。ローカルのDiscourseリポジトリで if ステートメントを削除したところ、ミドルウェアは常にインストールされるようになりました。

おそらく開発者(またはこのガイドの著者である @rishabh さん?)が助けてくれるかもしれません。OPガイドを文字通りに実行し、Ubuntu 22.04 の新しい VM インストールで、ユーザー(非root)アカウントを使用しました。

  • プラグインを discourse/plugins/ サブフォルダにシンボリックリンクした場合、d/shutdown_dev; d/boot_dev を実行しない限り、プラグインのイニシャライザ JS コードの変更は表示されませんd/rails sd/ember-cli を再起動してもです。

  • プラグインを discourse/plugins/ サブフォルダにコピーした場合、d/shutdown_dev; d/boot_dev を実行しなくても、プラグインのイニシャライザ JS コードの変更は表示されますd/rails sd/ember-cli を再起動するだけで済みます。

対象のプラグインは discourse-math で、変更しているコードは assets/initializers/javascript/*.js にあります。これらのファイルはサイドロードされており、ブラウザから直接 HTTP GET 呼び出しされていないことに気づきました(違いがあるかはわかりません)。

追伸:私は Discourse には慣れていませんが、Web/JS 開発には慣れています(つまり、ブラウザをリフレッシュしたかどうか尋ねる必要はありません :slight_smile:

開発者の方、このエラーを確認していただけますでしょうか。私の状況に固有のものではなく、Rubyに関連しているようです。Dockerインストールに関する指示に従ってWindowsでDiscourseを開発用にインストールしていましたが、数回成功しています。スクリプトはデータベースのインストールまで進みましたが、失敗しました。最初の警告は致命的ではないようですが、このダンプのさらに下にある xss.min.js ファイルが見つからないことが致命的でした。

‘’'You are attempting to run migrations in your test environment and are not loading plugins, setting LOAD_PLUGINS to 1
DEPRECATION WARNING: Using legacy connection handling is deprecated. Please set
legacy_connection_handling to false in your application.

The new connection handling does not support connection_handlers
getter and setter.

Read more about how to migrate at: Multiple Databases with Active Record — Ruby on Rails Guides
(called from at /src/config/environment.rb:7)
== 20150501152228 RenameTotalVotesToVoters: migrating ========
== 20150501152228 RenameTotalVotesToVoters: migrated (0.0106s) ========

== 20151016163051 MergePollsVotes: migrating ==================================
== 20151016163051 MergePollsVotes: migrated (0.0017s) =========================

== 20160321164925 ClosePollsInClosedTopics: migrating =========================
== 20160321164925 ClosePollsInClosedTopics: migrated (0.0281s) ===============

== 20180820073549 CreatePollsTables: migrating ================================
– create_table(:polls, {})
→ 0.0067s
– add_index(:polls, [:post_id, :name], {:unique=>true})
→ 0.0008s
– create_table(:poll_options, {})
→ 0.0039s
– add_index(:poll_options, [:poll_id, :digest], {:unique=>true})
→ 0.0009s
– create_table(:poll_votes, {:id=>false})
→ 0.0044s
– add_index(:poll_votes, [:poll_id, :poll_option_id, :user_id], {:unique=>true})
→ 0.0006s
== 20180820073549 CreatePollsTables: migrated (0.0188s) =======================

== 20180820080623 MigratePollsData: migrating =================================
– execute("INSERT INTO post_custom_fields (name, value, post_id, created_at, updated_at)
SELECT ‘has_polls’, ‘t’, post_id, MIN(created_at), MIN(updated_at)
FROM polls
GROUP BY post_id
")
→ 0.0008s
== 20180820080623 MigratePollsData: migrated (0.0033s) ========================

== 20191114160613 AddGraphToPolls: migrating ==================================
– add_column(:polls, :chart_type, :integer, {:default=>0, :null=>false})
→ 0.0012s
== 20191114160613 AddGraphToPolls: migrated (0.0020s) =========================

== 20191206123012 AddGroupNameToPolls: migrating ==============================
– add_column(:polls, :groups, :string, {})
→ 0.0005s
== 20191206123012 AddGroupNameToPolls: migrated (0.0012s) =====================

== 20200520015508 ClearLastGravatarDownloadAttemptOnUserAvatars: migrating ====
– execute("UPDATE user_avatars
SET last_gravatar_download_attempt = null
WHERE user_id = -2 AND custom_upload_id IS NULL AND gravatar_upload_id IS NULL
")
→ 0.0006s
== 20200520015508 ClearLastGravatarDownloadAttemptOnUserAvatars: migrated (0.0014s)

== 20200804144550 AddTitleToPolls: migrating ==================================
– add_column(:polls, :title, :string, {})
→ 0.0005s
== 20200804144550 AddTitleToPolls: migrated (0.0011s) =========================

rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - /src/app/assets/javascripts/node_modules/xss/dist/xss.min.js
/src/lib/pretty_text.rb:613:in block in ctx_load' /src/lib/pretty_text.rb:612:in each’
/src/lib/pretty_text.rb:612:in ctx_load' /src/lib/pretty_text.rb:108:in create_es6_context’
/src/lib/pretty_text.rb:153:in block in v8' /src/lib/pretty_text.rb:151:in synchronize’
/src/lib/pretty_text.rb:151:in v8' /src/lib/pretty_text.rb:190:in block in markdown’
/src/lib/pretty_text.rb:606:in block in protect' /src/lib/pretty_text.rb:605:in synchronize’
/src/lib/pretty_text.rb:605:in protect' /src/lib/pretty_text.rb:189:in markdown’
/src/lib/pretty_text.rb:318:in cook' /src/app/models/user_profile.rb:149:in cooked’
/src/app/models/user_profile.rb:158:in cook' (eval):51:in block (2 levels) in run_file’
/src/lib/tasks/db.rake:234:in block (2 levels) in <main>' /src/lib/distributed_mutex.rb:57:in block in synchronize’
/src/lib/distributed_mutex.rb:53:in synchronize' /src/lib/distributed_mutex.rb:53:in synchronize’
/src/lib/distributed_mutex.rb:38:in synchronize' /src/lib/tasks/db.rake:214:in block in ’
Tasks: TOP => db:migrate
(See full trace by running task with --trace)‘’’

「いいね!」 3

この素晴らしいリソースをありがとうございます。いくつか役立つ点があります。

  1. データを完全に削除して再起動するためのコマンドを以下に示します。
    docker stop discourse_dev ; docker rm discourse_dev ; sudo rm -rf data ; rm -rf tmp/*

  2. 上記のような移行の問題が発生している場合は、正しい権限があることを確認してください。docker グループに参加しているか、sudo (悪い2番目のオプション) である必要があります。

  3. d/ember-cli を起動する前に d/rails s を完了させてください。そうしないと、奇妙なことが起こる可能性があります。

「いいね!」 1

Tarekさん、ありがとうございます。

インストールをワイプしてクローニングプロセスを繰り返した後、初期化中にまったく同じエラーが発生しました。つまり、「rake aborted!
"Errno::ENOENT: No such file or directory @ rb_sysopen"
」です。

ただし、今回は正常に進めることができ、「Congratulations.」まで表示されました。ありがとうございます。

スクリプトが早期に終了したため、開発者用管理者のメールアドレスと設定ファイルがありません。初期化の問題を誰かが解明してくれるとありがたいです。

「d/rake admin:create」コマンドを使用して管理者メールアドレスを設定し、有効なメールアドレスと(最低10文字の)パスワードを入力しました。

その後、指示どおりブラウザでDiscourseを正常に起動できました。

「いいね!」 2

Fedora を使用している方はいらっしゃいますか? Podman と SELinux が強化されたセキュリティのために使用されているため、これはさらに複雑になります。Podman は実際には問題にならないと思います。OCI 準拠であり、podman-docker がインストールされていれば、すべての Docker コマンドは Podman コマンドに変換されます。SELinux についても適切な修正方法を見つけたと思いますが、まだ問題が発生しています。

そのため、discourse ディレクトリ内で、mkdir -vp data/postgres; sudo semanage fcontext -a -t svirt_sandbox_file_t \"/home/user/discourse/data(/.*)?\" \u0026\u0026 restorecon -rv . コマンドを実行して、これで十分と思われる SELinux コンテキストラベルを適用します(少なくとも SELinux エラーはなくなりました)。

しかし、それでもこのエラーが発生します。

[user@fedora discourse]$ d/boot_dev --init
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
Error: template: info:1:2: executing "info" at <.Architecture>: can't evaluate field Architecture in type *define.Info
WARNING: Docker architecture is not x86_64.
Discourse development is unlikely to work using Docker's architecture emulation.
Please try a native development installation.
Using source in: /home/user/discourse
Using data in:   /home/user/discourse/data/postgres
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
✔ docker.io/discourse/discourse_dev:release
Trying to pull docker.io/discourse/discourse_dev:release...
Getting image source signatures
Copying blob b42e9bacf67a done
Copying blob 3257b89dc3e0 done
Copying blob 8f87c7014fb0 done
Copying blob bf00c24d0f5b done
Copying blob 10e0cd28eb63 done
Copying blob 1efc276f4ff9 done
Copying blob 6d9350d0e59c done
Copying blob 84ee3423e706 done
Copying blob ee2701209d47 done
Copying blob 2f702c3c2f9f done
Copying blob 27762615d0fc done
Copying blob 7056a5796a1a done
Copying blob c8a22dd30e4c done
Copying blob 1a93cd2f0c23 done
Copying config 6365e737b9 done
Writing manifest to image destination
Storing signatures
6365e737b90aea36af1fd9ed029db43a0a620f1c285416546f5e6ee728aca4c5
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7
Installing gems...
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
Could not locate Gemfile

systemd ジャーナルは次のように報告しています。

Aug 09 18:47:45 fedora podman[19380]: 2022-08-09 18:47:45.841001786 +0200 CEST m=+0.137712533 image pull  discourse/discourse_dev:release
Aug 09 18:47:45 fedora podman[19380]:
Aug 09 18:47:46 fedora podman[19380]: 2022-08-09 18:47:46.043506861 +0200 CEST m=+0.340217585 container create 5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7 (image=docker.io/discourse/discourse_dev:release, name=discourse_dev)
Aug 09 18:47:46 fedora kernel: tun: Universal TUN/TAP device driver, 1.6
Aug 09 18:47:46 fedora systemd[1684]: selinux: avc:  op=load_policy lsm=selinux seqno=7 res=1
Aug 09 18:47:46 fedora systemd[1684]: selinux: Regex version mismatch, expected: 10.39 2021-10-29 actual: 10.40 2022-04-14
Aug 09 18:47:46 fedora systemd[1684]: selinux: Regex version mismatch, expected: 10.39 2021-10-29 actual: 10.40 2022-04-14
Aug 09 18:47:46 fedora systemd[1684]: selinux: Regex version mismatch, expected: 10.39 2021-10-29 actual: 10.40 2022-04-14
Aug 09 18:47:46 fedora systemd[1684]: Started libpod-conmon-5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7.scope.
Aug 09 18:47:46 fedora systemd[1684]: Started libpod-5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7.scope - libcrun container.
Aug 09 18:47:46 fedora chronyd[792]: Selected source 158.101.221.122 (2.fedora.pool.ntp.org)
Aug 09 18:47:46 fedora podman[19380]: 2022-08-09 18:47:46.370028125 +0200 CEST m=+0.666738859 container init 5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7 (image=docker.io/discourse/discourse_dev:release, name=discourse_dev)
Aug 09 18:47:46 fedora podman[19380]: 2022-08-09 18:47:46.433863112 +0200 CEST m=+0.730573845 container start 5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7 (image=docker.io/discourse/discourse_dev:release, name=discourse_dev)
Aug 09 18:47:46 fedora discourse_dev[19420]: run-parts: executing /etc/runit/1.d/00-fix-var-logs
Aug 09 18:47:46 fedora discourse_dev[19420]: run-parts: executing /etc/runit/1.d/anacron
Aug 09 18:47:46 fedora discourse_dev[19420]: run-parts: executing /etc/runit/1.d/cleanup-pids
Aug 09 18:47:46 fedora discourse_dev[19420]: Cleaning stale PID files
Aug 09 18:47:46 fedora discourse_dev[19420]: run-parts: executing /etc/runit/1.d/ensure-database
Aug 09 18:47:47 fedora podman[19425]: 2022-08-09 18:47:47.698175757 +0200 CEST m=+1.211177315 container exec 5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7 (image=docker.io/discourse/discourse_dev:release, name=discourse_dev)
Aug 09 18:47:48 fedora discourse_dev[19420]: Started runsvdir, PID is 29
Aug 09 18:47:48 fedora podman[19425]: 2022-08-09 18:47:48.535303673 +0200 CEST m=+2.048305123 container exec_died 5282393e248e33800e235b4405c9a7197d10a3fc1d405450f1c99d2a5c7c85c7 (image=docker.io/discourse/discourse_dev:release, name=discourse_dev, execID=166d86f7ca8739899bd59801c2f8bb3d9b940329d8e6bb29d0f45ad82e9d60b0)

discourse ディレクトリのログディレクトリは空ですが、どのようにすればより適切にトラブルシューティングできますか?
パスは Gem ファイルを見つけるために正しく設定されているようです。

[user@fedora discourse]$ SCRIPTPATH=$(cd "$(dirname "$0")" > /dev/null; pwd -P)
[user@fedora discourse]$ echo $SCRIPTPATH
/home/user/discourse

以前、仮想 Fedora 開発環境を一から構築してある程度の成功を収めましたが、本番環境のセットアップを機能させることができませんでした。Podman Q にも質問しましたが、誰かが可能であると親切に答えてくれましたが、変更すべきことがたくさんあり、彼はそれを実行する時間がありませんでした。

開発版と本番版の Fedora を両方とも稼働させたいです。

「いいね!」 2

この質問が理解できません。次のようなエラーで中断します。

rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - /src/app/assets/javascripts/node_modules/xss/dist/xss.min.js
/src/lib/pretty_text.rb:613:in `block in ctx_load'
/src/lib/pretty_text.rb:612:in `each'
/src/lib/pretty_text.rb:612:in `ctx_load'
/src/lib/pretty_text.rb:108:in `create_es6_context'
/src/lib/pretty_text.rb:153:in `block in v8'
/src/lib/pretty_text.rb:151:in `synchronize'
/src/lib/pretty_text.rb:151:in `v8'
/src/lib/pretty_text.rb:190:in `block in markdown'
/src/lib/pretty_text.rb:606:in `block in protect'
/src/lib/pretty_text.rb:605:in `synchronize'
/src/lib/pretty_text.rb:605:in `protect'
/src/lib/pretty_text.rb:189:in `markdown'
/src/lib/pretty_text.rb:318:in `cook'
/src/app/models/user_profile.rb:149:in `cooked'
/src/app/models/user_profile.rb:158:in `cook'
(eval):51:in `block (2 levels) in run_file'
/src/lib/tasks/db.rake:234:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:57:in `block in synchronize'
/src/lib/distributed_mutex.rb:53:in `synchronize'
/src/lib/distributed_mutex.rb:53:in `synchronize'
/src/lib/distributed_mutex.rb:38:in `synchronize'
/src/lib/tasks/db.rake:214:in `block in <main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

Ubuntuを使いたいのですが、なぜか spice-vdagent とうまく動作せず、VMを実行すると多くのグラフィックエラーが発生します。Fedoraはバターのようにスムーズに動作します… コンテナがポータビリティを解決してくれると思ったのですが :stuck_out_tongue: UbuntuのヘッドレスシステムをセットアップしてSSHでログインすることになりそうです。


Ubuntu Server 22.04 でも同じエラーが発生します。

私もこの問題が発生しています。@tarek の提案に従い、再確認しましたが、問題が再発します。Discourse ディレクトリ全体をクリーンアップし、最初からやり直しました。Ubuntu 22.04.01 を VM で使用しており、Ubuntu で利用可能な最新の Docker を使用しています。

「いいね!」 1

現在のgit masterの時点では、これは正常に完了しません。コアのバグだと思います。開発環境をセットアップするには、エラーの後に以下を実行してください。

d/rake db:migrate
d/rake admin:create
d/rails s

さらに、次の2つのターミナルで d/ember-clid/mailhog を実行します。

「いいね!」 4

d/rails s でクエリの出力をすべて表示しないようにする方法について、何かアイデアはありますか?バグを見つけるために byebug などを使用するのがずっと難しくなります。

「いいね!」 2

試してください: DISCOURSE_DEV_LOG_LEVEL=info bin/rails s

その他のヒントはこちら: https://discourse.pluginmanager.org/t/debugging-ruby-with-byebug/378?u=merefield

「いいね!」 7

こんにちは。

Ubuntu の stable (v2.8.8) でこれを実行しようとしていますが、以下のエラーが発生しています。

データベースを移行中...
== 20220104053343 AddBookmarkPolymorphicColumns: マイグレーション中 ====================
-- add_column(:bookmarks, :bookmarkable_id, :integer)
rake aborted!
StandardError: エラーが発生しました。このマイグレーションおよびそれ以降のすべてのマイグレーションはキャンセルされました。

PG::DuplicateColumn: ERROR:  relation "bookmarks" の列 "bookmarkable_id" は既に存在します
/src/lib/migration/safe_migrate.rb:92:in `async_exec'
/src/db/migrate/20220104053343_add_bookmark_polymorphic_columns.rb:5:in `change'
/src/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/src/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/src/lib/migration/safe_migrate.rb:28:in `migrate'
/src/lib/migration/safe_migrate.rb:55:in `migrate'
/src/lib/tasks/db.rake:218:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:33:in `block in synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:14:in `synchronize'
/src/lib/tasks/db.rake:210:in `block in <main>'

Caused by:
ActiveRecord::StatementInvalid: PG::DuplicateColumn: ERROR:  relation "bookmarks" の列 "bookmarkable_id" は既に存在します
/src/lib/migration/safe_migrate.rb:92:in `async_exec'
/src/db/migrate/20220104053343_add_bookmark_polymorphic_columns.rb:5:in `change'
/src/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/src/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/src/lib/migration/safe_migrate.rb:28:in `migrate'
/src/lib/migration/safe_migrate.rb:55:in `migrate'
/src/lib/tasks/db.rake:218:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:33:in `block in synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:14:in `synchronize'
/src/lib/tasks/db.rake:210:in `block in <main>'

Caused by:
PG::DuplicateColumn: ERROR:  relation "bookmarks" の列 "bookmarkable_id" は既に存在します
/src/lib/migration/safe_migrate.rb:92:in `async_exec'
/src/db/migrate/20220104053343_add_bookmark_polymorphic_columns.rb:5:in `change'
/src/lib/freedom_patches/schema_migration_details.rb:9:in `block in exec_migration'
/src/lib/freedom_patches/schema_migration_details.rb:8:in `exec_migration'
/src/lib/migration/safe_migrate.rb:28:in `migrate'
/src/lib/migration/safe_migrate.rb:55:in `migrate'
/src/lib/tasks/db.rake:218:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:33:in `block in synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:29:in `synchronize'
/src/lib/distributed_mutex.rb:14:in `synchronize'
/src/lib/tasks/db.rake:210:in `block in <main>'

Tasks: TOP => db:migrate
(See full trace by running task with --trace)

以下を試しましたが、同じエラーが発生します。

d/rake db:migrate RAILS_ENV=development

どなたか同じような経験をされた方はいらっしゃいますか?

以前と同じデータベースを使用しているため、すでに移行済みであるという疑いがあります。

Actually @hyphalos、それは取り消します。コンテナ内で次のシェルコマンドを実行すると、これを再現できます。

discourse@discourse:/src$ sudo su postgres -c 'psql discourse -c \"drop database discourse_test\"'
DROP DATABASE
discourse@discourse:/src$ sudo su postgres -c 'psql discourse -c \"create database discourse_test\"'
CREATE DATABASE
discourse@discourse:/src$ sudo su postgres -c 'psql -c \"grant all privileges on database discourse_test to discourse;\"'
GRANT
discourse@discourse:/src$ RAILS_ENV=test rake db:migrate

ここで何か問題がありますか?

このマイグレーションは問題を引き起こす可能性があるようです。

== 20220104053343 AddBookmarkPolymorphicColumns: migrating ====================
-- add_column(:bookmarks, :bookmarkable_id, :integer)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::DuplicateColumn: ERROR:  column "bookmarkable_id" of relation "bookmarks" already exist

これは奇妙 (?) です。なぜなら:

discourse_test=> \d bookmarks
                                                Table "public.bookmarks"
        Column         |              Type              | Collation | Nullable |                Default
-----------------------+--------------------------------+-----------+----------+---------------------------------------
 id                    | bigint                         |           | not null | nextval('bookmarks_id_seq'::regclass)
 user_id               | bigint                         |           | not null |
 post_id               | bigint                         |           | not null |
 name                  | character varying(100)         |           |          |
 reminder_at           | timestamp without time zone    |           |          |
 created_at            | timestamp(6) without time zone |           | not null |
 updated_at            | timestamp(6) without time zone |           | not null |
 reminder_last_sent_at | timestamp without time zone    |           |          |
 reminder_set_at       | timestamp without time zone    |           |          |
 auto_delete_preference| integer                        |           | not null | 0
 pinned                | boolean                        |           |          | false
 for_topic             | boolean                        |           | not null | false
Indexes:
    "bookmarks_pkey" PRIMARY KEY, btree (id)
    "index_bookmarks_on_post_id" btree (post_id)
    "index_bookmarks_on_reminder_at" btree (reminder_at)
    "index_bookmarks_on_reminder_set_at" btree (reminder_set_at)
    "index_bookmarks_on_user_id" btree (user_id)
    "index_bookmarks_on_user_id_and_post_id_and_for_topic" UNIQUE, btree (user_id, post_id, for_topic)

これは tests-passed には影響しないようですが、stable ブランチのみですか?

@RGJ のおかげで、これが少し明らかになるかもしれません。

CC: @pfaffman

「いいね!」 1

ロバートさん、こんにちは。

気が狂いそうでした。自分だけがこんな経験をしているのかと思っていました。この問題の回避策を見つけるのに苦労しました。ブックマークの問題の回避策を見つけた以前の投稿はこちらですが、別の問題が発生しました。

これを修正するための適切な方向性を示していただけますか?
d/boot_dev --init を実行しようとすると、これが表示されます。

rake aborted!
ActiveRecord::ConnectionNotEstablished: サーバーへの接続に失敗しました (ホスト \"127.0.0.1\"、ポート 5432): 接続拒否されました
        サーバーはそのホストで実行されており、TCP/IP接続を受け入れていますか?
サーバーへの接続に失敗しました (ホスト \"::1\"、ポート 5432): 要求されたアドレスを割り当てることができません
        サーバーはそのホストで実行されており、TCP/IP接続を受け入れていますか?
/src/config/initializers/006-ensure_login_hint.rb:8:in `block in <main>'
/src/config/environment.rb:7:in `<main>'

原因:
PG::ConnectionBad: サーバーへの接続に失敗しました (ホスト \"127.0.0.1\"、ポート 5432): 接続拒否されました
        サーバーはそのホストで実行されており、TCP/IP接続を受け入れていますか?
サーバーへの接続に失敗しました (ホスト \"::1\"、ポート 5432): 要求されたアドレスを割り当てることができません
        サーバーはそのホストで実行されており、TCP/IP接続を受け入れていますか?
/src/config/initializers/006-ensure_login_hint.rb:8:in `block in <main>'
/src/config/environment.rb:7:in `<main>'
タスク: TOP => db:migrate => db:load_config => environment
(タスクを --trace オプション付きで実行すると、完全なトレースが表示されます)

事前にどんな助けでも感謝します :smile:

「いいね!」 1

d/boot_dev --init を実行すると、次のエラーが発生します。

...
...
...
== 20221219082223 AddIndexToChatMessages: migrated (0.0138s) ==

rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - /src/app/assets/javascripts//node_modules/loader.js/dist/loader/loader.js
/src/lib/pretty_text.rb:637:in `block in ctx_load'
/src/lib/pretty_text.rb:636:in `each'
/src/lib/pretty_text.rb:636:in `ctx_load'
/src/lib/pretty_text.rb:97:in `create_es6_context'
/src/lib/pretty_text.rb:144:in `block in v8'
/src/lib/pretty_text.rb:142:in `synchronize'
/src/lib/pretty_text.rb:142:in `v8'
/src/lib/pretty_text.rb:184:in `block in markdown'
/src/lib/pretty_text.rb:630:in `block in protect'
/src/lib/pretty_text.rb:629:in `synchronize'
/src/lib/pretty_text.rb:629:in `protect'
/src/lib/pretty_text.rb:183:in `markdown'
/src/lib/pretty_text.rb:328:in `cook'
/src/app/models/user_profile.rb:149:in `cooked'
/src/app/models/user_profile.rb:158:in `cook'
(eval):51:in `block (2 levels) in run_file'
/src/lib/tasks/db.rake:234:in `block (2 levels) in <main>'
/src/lib/distributed_mutex.rb:57:in `block in synchronize'
/src/lib/distributed_mutex.rb:53:in `synchronize'
/src/lib/distributed_mutex.rb:53:in `synchronize'
/src/lib/distributed_mutex.rb:38:in `synchronize'
/src/lib/tasks/db.rake:214:in `block in <main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)