max-elia
(Max Elia)
2021 年 7 月 2 日午後 12:45
168
ごガイドをありがとうございます。
ただし、管理セクションからバックアップを作成する際に問題が発生しています。
表示されるエラーは以下の通りです:
pg_dump: error: connection to database "discourse development" failed: FATAL: Peer authentication failed for user "postgres".
pg_hba.conf ファイルを確認しましたが、すべてのオプションを trust に設定しています。
この問題を解決する方法についてお手伝いいただければ幸いです。
Ubuntu と MacOSX の両方で試しましたが、どちらも問題なく動作しています(投稿の作成、API など)。ただし、バックアップ機能のみが動作しません。
merefield
(Robert)
2021 年 8 月 30 日午前 6:39
169
素晴らしい Docker ソリューションをありがとうございます。
プラグインの仕様を実行する場合、以下のようにするとうまく動作します:
d/rake plugin:spec["discourse-follow"]
非 Docker 環境の開発者と同様に、特定のプラグインのテストをターゲットにする方法はありますか?例えば:
LOAD_PLUGINS=1 RAILS_ENV=test rspec plugins/discourse-follow/spec/requests/follow_controller_spec.rb:32
以下のように試してみましたが、エラーが発生しました:
d/rspec plugins/discourse-follow/spec/lib/updater_spec.rb:10 LOAD_PLUGINS=1 RAILS_ENV=test
LOAD_PLUGINS および RAILS_ENV は、環境変数を割り当てるためにコマンドの前に置く必要があります。コマンドの後に記述すると、これらは rspec の引数として扱われ、rspec はそれを認識できません。
LOAD_PLUGINS=1 RAILS_ENV=test d/rspec plugins/discourse-follow/spec/lib/updater_spec.rb:10
merefield
(Robert)
2021 年 8 月 30 日午後 2:30
171
いいえ、それが機能するとは納得できません。実際に試しましたか?
以下のエラーが発生します:
NameError:
uninitialized constant Follow
これは、環境変数が Docker プロセスに引き継がれていないことが原因ではないかと疑っています。
そのため、それらを引数として渡そうとしていたのです。
申し訳ありません、ご提示いただいた2つのコマンドを「最初のものは別の仕様では機能するが、2つ目はその仕様では機能しない」と誤解していました。開発環境のセットアップができておらず、検証できておりませんでした。
GitHub 上の rspec ファイルを確認したところ、環境変数が渡されていない点が問題であるというご指摘は正しいと思います。ただし、d/shell を実行してコンテナ内のシェルにアクセスし、そこで rspec コマンドを実行すれば対応できるはずです。
「いいね!」 1
merefield
(Robert)
2021 年 8 月 30 日午後 3:01
173
Simon、それは単なる優れた回避策ではなく、非常に実用的で素晴らしいですね。ありがとうございます!
早速試してみましたが、問題なく動作しました。つまり:
my-blah-machine:~/discourse$ d/shell
discourse@discourse:/src$ LOAD_PLUGINS=1 RAILS_ENV=test rspec plugins/discourse-follow/spec/lib/updater_spec.rb:37
この方法と、プラグインのバージョン全体を Wiki に追加しました。
「いいね!」 1
d/shell と d/rspec の両方が使用する d/exec を詳しく見ると、これも以下のように短縮できると思います:
RAILS_ENV=test d/exec LOAD_PLUGINS=1 rspec plugins/discourse-follow/spec/lib/updater_spec.rb:37
d/exec は RAILS_ENV を渡しますが LOAD_PLUGINS は渡さないため、これらが d/exec の両側に配置されています。
「いいね!」 1
merefield
(Robert)
2021 年 8 月 30 日午後 4:13
175
エラーが発生しました:
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "LOAD_PLUGINS=1": executable file not found in $PATH: unknown
ああ、docker exec ではそのように環境変数を使えないんですね。まあ、まずはシェルを開いてからなら動作します。
「いいね!」 1
dmc
2021 年 9 月 5 日午前 3:28
177
Max と全く同じ問題が発生しています。ローカルの開発用 Docker インストール環境でバックアップやリストアを試みると、常に同じエラー Peer authentication failed for user "postgres" が表示されます。
調査したところ、開発環境ではデータベース設定が以下のように表示されていることがわかりました。
BackupRestore.database_configuration
=> #<struct BackupRestore::DatabaseConfiguration host=nil, port=nil, username="postgres", password=nil, database="discourse_development">
どうやら開発環境では環境変数にユーザー名が設定されていないため、BackupRestore モジュールがユーザー名のデフォルト値を postgres にしているようです。
# lib/backup_restore.rb:122
DatabaseConfiguration.new(
config["backup_host"] || config["host"],
config["backup_port"] || config["port"],
config["username"] || username || ENV["USER"] || "postgres",
config["password"] || password,
config["database"]
)
正しいデータベースユーザー名はどこで設定すればよいでしょうか?
「いいね!」 1
merefield
(Robert)
2021 年 9 月 6 日午前 10:58
178
Install the Discourse Theme CLI console app to help you build themes のツールをここでどのように使用すればよいでしょうか?
d/exec sudo gem install discourse_theme で gem のインストールには成功しました。現在は、ローカルのテーマにシンボリックリンクを張る方法が課題です。
@Simon_Manning 権限の問題を回避するために sudo を使用した点にご注意ください(@fzngagan さん、リマインダーをありがとうございます)。
Docker 環境でプラグインのテストを試みています。アプリがランダムに読み込みを停止し、データフォルダを削除してすべてを再構築するまで、空白のページが表示されたままになります。この問題をデバッグするためのヒントはありますか?
helmi
(Helmi)
2021 年 10 月 13 日午後 4:55
180
それについて何か判明しましたか?まだ問題のようです。
dmc
2021 年 10 月 14 日午前 10:54
181
私の「汚い」回避策は、以下のコードブロックでユーザー名を postgres から discourse に置き換えることでした。
# lib/backup_restore.rb:122
DatabaseConfiguration.new(
config["backup_host"] || config["host"],
config["backup_port"] || config["port"],
config["username"] || username || ENV["USER"] || "postgres",
config["password"] || password,
config["database"]
)
helmi
(Helmi)
2021 年 10 月 15 日午前 7:22
182
ローカルの Mac から Ubuntu VM に切り替えて、この環境を簡単にセットアップできるか試してみましたが、残念ながらまだうまくいきません。
初期段階ですでに奇妙な権限問題に直面しています。d/bundle install を実行すると、いくつかのインストールに sudo 権限が必要だと報告され、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)
何が原因で失敗しているか見当がつきますか?このマシンでは以前、問題なく本番環境の Discourse を稼働させていました。ただ、そのコンテナを停止して削除し、開発用の git リポジトリを別のディレクトリにクローンしただけです。すべての操作を異なるシェルインスタンスを処理するために tmux を通じて実行しています。
dfabulich
(Dan Fabulich)
2021 年 10 月 21 日午前 6:14
183
私はまだ M1 には移行していませんが、非常に近い将来に移行する予定で、Docker 設定の利便性を強く好んでいます。
その PR リンクは、以下のように述べている \u003chttps://github.com/docker/for-mac/issues/5321\u003e へリンクしています:
\u003e 唯一の解決策は、arm64 対応のマルチアーキテクチャイメージに切り替えることです。 これらははるかに高速で、一般的により信頼性が高くなります。使用しているベースイメージを調査し、可能であればマルチアーキテクチャのイメージに切り替えることをお勧めします。各イメージがサポートするアーキテクチャは Docker Hub で確認できます:[…]
\u003e
\u003e ご自身でマルチアーキテクチャイメージをビルドする場合は、docker buildx をお勧めします。こちらのブログ記事をご覧ください:\u003chttps://www.docker.com/blog/multi-arch-build-and-images-the-simple-way/\u003e
Discourse チームはマルチアーキテクチャイメージのサポートに前向きでしょうか?Discourse のベースイメージは debian:buster-slim をベースにしており、これはすでにマルチアーキテクチャ対応です。そのため、Discourse のベースイメージをマルチアーキテクチャ化することはそれほど困難ではないように思われます。ただし、それによって皆様が生産環境で ARM をサポートする必要に迫られる可能性があります。誰か(Discourse チームでしょうか?)が x86_64 と ARM の両方で Discourse のテストを実行し、失敗した際に問題を修正するなどの作業を行う必要があります。
ここで PR が歓迎されるでしょうか?
(私見ですが、クラウドホスト環境であっても ARM は未来のアーキテクチャであるように思えます。)
「いいね!」 2
WSL2 でこれをセットアップしようとしています。
ember_cli を起動するところまで進んだのですが、Chrome で以下のエラーが表示されます。
ターミナルにも開発ログにもエラーは表示されていません。ご提案があれば、ぜひ教えてください。
「いいね!」 1
koen360
2021 年 11 月 10 日午後 5:57
186
皆さん、こんにちは。
同じ問題が発生しているので、バグとして報告したいと思います。以下を参照してください。
クリーンな開発Docker環境でのバックアップ復元が失敗する:FATAL: ユーザー「postgres」に対するピア認証が失敗しました
追加情報を提供したり、お手伝いできることがあればお知らせください。
Koen
dcook
2021 年 11 月 16 日午前 4:43
187
openSUSE Leap 15 で動作させることができません。Docker を使用しているため、本来は関係ないはずですが、サポートされている OS ではないのでしょう。
Migrating database...
rake aborted!
Errno::EACCES: Permission denied @ dir_s_mkdir - /src/app/assets/javascripts/plugins
/src/lib/plugin/instance.rb:441:in `ensure_directory'
/src/lib/plugin/instance.rb:713:in `activate!'
lib/discourse.rb:283:in `block in activate_plugins!'
lib/discourse.rb:280:in `each'
lib/discourse.rb:280:in `activate_plugins!'
/src/config/application.rb:318:in `block in <class:Application>'
/src/lib/plugin_initialization_guard.rb:5:in `plugin_initialization_guard'
/src/config/application.rb:317:in `<class:Application>'
/src/config/application.rb:73:in `<module:Discourse>'
/src/config/application.rb:72:in `<main>'
/src/Rakefile:7:in `<main>'
(See full trace by running task with --trace)
「app/assets/javascripts/plugins」を直接作成しようとしましたが、次のエラーが発生しました。
Migrating database...
rake aborted!
Errno::EACCES: Permission denied @ dir_s_mkdir - /src/tmp
lib/discourse.rb:94:in `atomic_write_file'
/src/lib/plugin/instance.rb:726:in `activate!'
lib/discourse.rb:283:in `block in activate_plugins!'
lib/discourse.rb:280:in `each'
lib/discourse.rb:280:in `activate_plugins!'
/src/config/application.rb:318:in `block in <class:Application>'
/src/lib/plugin_initialization_guard.rb:5:in `plugin_initialization_guard'
/src/config/application.rb:317:in `<class:Application>'
/src/config/application.rb:73:in `<module:Discourse>'
/src/config/application.rb:72:in `<main>'
/src/Rakefile:7:in `<main>'
(See full trace by running task with --trace)
ソースフォルダに tmp を mkdir します…
しかし、その後、次のようになります。
Migrating database...
rake aborted!
Errno::EACCES: Permission denied @ rb_sysopen - /src/tmp/5ad4443faf817dc922116f8df65ae5c3
lib/discourse.rb:97:in `initialize'
lib/discourse.rb:97:in `open'
lib/discourse.rb:97:in `atomic_write_file'
/src/lib/plugin/instance.rb:726:in `activate!'
lib/discourse.rb:283:in `block in activate_plugins!'
lib/discourse.rb:280:in `each'
lib/discourse.rb:280:in `activate_plugins!'
/src/config/application.rb:318:in `block in <class:Application>'
/src/lib/plugin_initialization_guard.rb:5:in `plugin_initialization_guard'
/src/config/application.rb:317:in `<class:Application>'
/src/config/application.rb:73:in `<module:Discourse>'
/src/config/application.rb:72:in `<main>'
/src/Rakefile:7:in `<main>'
(See full trace by running task with --trace)
boot_dev は discourse ユーザーとして docker exec を実行しているようですが、ディレクトリはユーザー 1016 (私のホストユーザーの uid) によって所有されています。
多くの開発者は、ユーザーの uid が 1000 で偶然一致する個人のラップトップではこの問題に遭遇しないと想像しています…
「いいね!」 1