Bootstrapエラー aiプラグインに関する、bundle exec rake db:migrate

現在 3.5.0.beta7-dev で AI プラグインを web_only コンテナ設定に含めると、すぐにブートストラップ エラーが発生します。このプラグイン なし では、同じビルドは正常に動作します。

Upgrade Error - rake db:migrate index on theme_field_id - #7 by pfaffman を読むと、根本原因は (外部の) PostgreSQL サーバー 13.20 に拡張機能が不足しているのではないかと疑っています。サーバーには、hstore、pg_trgm、plpgsql、unaccent 拡張機能があり、同じコードを使用している本番環境の Discourse インストールでも使用されていますが、AI プラグインはまだ含まれていません。

AI プラグインに必要な PostgreSQL 拡張機能を特定していただけますか? Discourse AI - Self-Hosted Guide ではこの情報を見つけることができませんでした。AI Plugin Build Error - 'bundle exec rake db:migrate' failed のような類似のバグ投稿は、異なるシナリオを使用しており、私の現在の運用ユースケースとは関係がない可能性があります…

web_only.yaml の関連部分

templates:
 - "templates/web.template.yml"
 ## Uncomment the next line to enable the IPv6 listener
 #- "templates/web.ipv6.template.yml"
 - "templates/web.ratelimited.template.yml"
 - "templates/web.socketed.template.yml"
 ## Uncomment these two lines if you wish to add Lets Encrypt (https)
 #- "templates/web.ssl.template.yml"
 #- "templates/web.letsencrypt.ssl.template.yml"

[...]

## configure connectivity to the databases
 DISCOURSE_DB_SOCKET: ''
 DISCOURSE_DB_USERNAME: discourse2
 DISCOURSE_DB_NAME: discourse2
 DISCOURSE_DB_PASSWORD: xxx
 DISCOURSE_DB_HOST: 10.10.10.xx
# redis caching on the neighbouring container
 DISCOURSE_REDIS_HOST: redis

[...]

## Plugins go here
## see https://meta.discourse.org/t/19157 for details
hooks:
 after_code:
   - exec:
       cd: $home/plugins
       cmd:
         - git clone https://github.com/discourse/docker_manager.git
         - git clone https://github.com/discourse/discourse-shared-edits.git
         - git clone https://github.com/discourse/discourse-chat-integration.git
         - git clone https://github.com/discourse/discourse-openid-connect.git
         - git clone https://github.com/discourse/discourse-calendar.git
         - git clone https://github.com/angusmcleod/discourse-events.git
         - git clone https://github.com/discourse/discourse-data-explorer.git
         - git clone https://github.com/discourse/discourse-reactions.git
         - git clone https://github.com/discourse/discourse-chat.git
         - git clone https://github.com/discourse/discourse-ai.git
         - git clone https://github.com/discourse/discourse-topic-voting.git
         - git clone https://github.com/discourse/discourse-post-voting.git
         - git clone https://github.com/discourse/discourse-user-notes.git
         - git clone https://github.com/discourse/discourse-solved.git
         - git clone https://github.com/discourse/discourse-docs-card-filter.git
         - git clone https://github.com/discourse/discourse-doc-categories.git
         - git clone https://github.com/discourse/discourse-assign.git
         - git clone https://github.com/discourse/discourse-templates.git
         - git clone https://github.com/discourse/discourse-saved-searches.git
         - git clone https://github.com/discourse/discourse-tooltips.git
         - git clone https://github.com/discourse/discourse-category-experts.git
         - git clone https://github.com/discourse/discourse-activity-pub.git
         - git clone https://github.com/discourse/discourse-follow.git
         - git clone https://github.com/nathan-nz/discourse-wikified-posts.git
         - git clone https://github.com/discourse/discourse-whos-online.git
         - git clone https://github.com/merefield/discourse-workflow.git
[...]

## for operation behind haproxy load balancer with local nginx on the container host
 - replace:
     filename: /etc/nginx/conf.d/discourse.conf
     from: "types {"
     to: |
       set_real_ip_from 127.0.0.1/24;
       set_real_ip_from 10.0.0.0/24;
       real_ip_header X-Forwarded-For;
       real_ip_header_recursive on;
       proxy_set_header Host $http_host;
       proxy_set_header X-Request-Start “t=${msec}”;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto https; # replaced $thescheme;
       proxy_set_header X-Real-IP $remote_addr;
       types {
[...]

sudo docker logs -t --tail 1000 web_only

gem install ice_cube -v 0.16.4 -i /var/www/discourse/plugins/discourse-events/gems/3.3.6 --no-document --ignore-dependencies --no-user-install
Successfully installed ice_cube-0.16.4
1 gem installed
gem install icalendar -v 2.8.0 -i /var/www/discourse/plugins/discourse-events/gems/3.3.6 --no-document --ignore-dependencies --no-user-install
ActiveSupport is required for TimeWithZone support, but not required for general use.
Successfully installed icalendar-2.8.0
1 gem installed
gem install icalendar-recurrence -v 1.1.3 -i /var/www/discourse/plugins/discourse-events/gems/3.3.6 --no-document --ignore-dependencies --no-user-install
Successfully installed icalendar-recurrence-1.1.3
1 gem installed
gem install multipart-post -v 2.4.0 -i /var/www/discourse/plugins/discourse-workflow/gems/3.3.6 --no-document --ignore-dependencies --no-user-install
Successfully installed multipart-post-2.4.0
1 gem installed
gem install faraday-multipart -v 1.0.4 -i /var/www/discourse/plugins/discourse-workflow/gems/3.3.6 --no-document --ignore-dependencies --no-user-install
Successfully installed faraday-multipart-1.0.4
1 gem installed
gem install event_stream_parser -v 1.0.0 -i /var/www/discourse/plugins/discourse-workflow/gems/3.3.6 --no-document --ignore-dependencies --no-user-install
Successfully installed event_stream_parser-1.0.0
1 gem installed
gem install ruby-openai -v 8.1.0 -i /var/www/discourse/plugins/discourse-workflow/gems/3.3.6 --no-document --ignore-dependencies --no-user-install
Successfully installed ruby-openai-8.1.0
1 gem installed
== 20230710171141 EnablePgVectorExtension: migrating ==========================
-- enable_extension(:vector)


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse &amp;&amp; su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 3914 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
3fac1371a3dd8b0d59760e492965c1d7ebb8a09e99549a9483596453f95ce871

GitHub - pgvector/pgvector: Open-source vector similarity search for Postgres が必要です。

「いいね!」 1

はい、ありがとうございます。これでブートストラップが成功しました。この情報はAIのセルフホスティングガイドに追加すべきかもしれません…

プラグインが移行中にこの基本的な手順を実行するものだと考えていました。ユーザーが実行しなければならないことに驚いています。残念ながら、私たちはBitnamiチャートを使用しており、チャートを介してこの拡張機能を実行する上でそれほど多くの制御ができません。手動で行うのは避けたいですが、それが進むべき道のように見えます。

プラグインが移行スクリプトにそれを追加しない理由を理解したいと思います。何か特定の理由がありましたか?

私の場合は、Discourse のデータベース部分は外部サーバー上に配置されており、Discourse コンテナの標準バンドルの一部ではありません。ベクトル拡張機能は、Discourse のデータベースユーザーとは異なる権限でインストールする必要があります。そのため、インストールはブートストラッププロセスの一部としてではなく、手動で実行する必要がありました。

それは本当です。私のためにうまくいったのは次のとおりです。

  • Bitnami Discourseチャートを使用する
  • Bitnami PostgreSQLのDockerfileをオーバーライドし、rootとしてVectorをインストールする
  • PostgreSQLの起動時に、discourseユーザーがVectorの所有者になるようにinitスクリプトを実行する
  • 残り(プラグインのインストールを含む)はBitnamiチャートによって処理される

これは苦労して学びました。これに関するドキュメントがあればよかったのですが。プラグインのドキュメントには、いくつかの前提条件が記載されているはずです。

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.