Bootstrap-Fehler mit ai plugin, bundle exec rake db:migrate

Ich stoße auf einen Bootstrap-Fehler bei der aktuellen Version 3.5.0.beta7-dev, sobald ich das KI-Plugin in ein reines Web-Container-Setup integriere. Derselbe Build funktioniert ohne dieses Plugin einwandfrei.

Nachdem ich Upgrade Error - rake db:migrate index on theme_field_id - #7 by pfaffman gelesen habe, vermute ich, dass die Ursache eine fehlende Erweiterung auf dem (externen) PostgreSQL-Server 13.20 ist. Der Server verfügt über die Erweiterungen hstore, pg_trgm, plpgsql, unaccent und wird auch für eine produktive Discourse-Installation verwendet, die denselben Code verwendet, jedoch noch ohne das KI-Plugin.

Kann jemand die erforderlichen PostgreSQL-Erweiterungen für das KI-Plugin identifizieren? Diese Information konnte ich im Discourse AI - Self-Hosted Guide nicht finden. Ähnliche Fehlerberichte wie AI Plugin Build Error - 'bundle exec rake db:migrate' failed verwenden ein anderes Szenario und sind möglicherweise nicht mit meinem hier vorliegenden Anwendungsfall verbunden …

Relevante Teile von 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_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 && 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

Sie benötigen GitHub - pgvector/pgvector: Open-source vector similarity search for Postgres

1 „Gefällt mir“

Yep, danke, das war’s, Bootstrap jetzt erfolgreich. Vielleicht sollten diese Informationen zum AI Self-Hosting-Leitfaden hinzugefügt werden …

Ich dachte, das Plugin sollte diesen grundlegenden Schritt während der Migration durchführen. Ich bin überrascht, dass der Benutzer ihn ausführen muss. Leider verwenden wir das Bitnami-Chart, ich habe nicht viel Kontrolle darüber, diese Erweiterung über das Chart auszuführen. Ich würde es ungern manuell machen, aber es sieht so aus, als wäre das der Weg nach vorne.

Ich würde gerne verstehen, warum das Plugin es nicht in sein Migrationsskript aufnimmt? Gab es einen bestimmten Grund?

In meinem Fall befindet sich der Datenbankteil von Discourse auf einem externen Server und ist nicht Teil des Standardpakets der Discourse-Container. Die Vektor-Erweiterung muss mit anderen Berechtigungen installiert werden als der Datenbankbenutzer für Discourse. Daher musste die Installation manuell durchgeführt werden, nicht als ein Schritt des Bootstrap-Prozesses.

Das stimmt. Hier ist, was für mich funktioniert hat.

  • Verwendung des Bitnami Discourse Charts
  • Überschreiben der Dockerfile für Bitnami Postgres und Installation von Vector als Root
  • Beim Start von Postgres wurde ein Init-Skript ausgeführt, um den Benutzer discourse zum Eigentümer von Vector zu machen
  • Der Rest (einschließlich der Installation des Plugins) wird vom Bitnami-Chart übernommen

Ich habe das auf die harte Tour gelernt. Ich wünschte, es gäbe Dokumentation dazu. Die Plugin-Dokumentation sollte einige Voraussetzungen erwähnen.

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