خطأ Bootstrap مع ai plugin، bundle exec rake db:migrate

أواجه خطأ في التمهيد على الإصدار الحالي 3.5.0.beta7-dev بمجرد تضمين إضافة الذكاء الاصطناعي في إعداد حاوية web_only. نفس البناء يعمل بشكل جيد بدون هذه الإضافة.

من خلال قراءة https://meta.discourse.org/t/upgrade-error-rake-db-migrate-index-on-theme-field-id/278935/7، أشك في أن السبب الجذري هو امتداد مفقود على خادم postgres الخارجي 13.20. يحتوي الخادم على الامتدادات hstore, pg_trgm, plpgsql, unaccent ويستخدم أيضًا لتثبيت discourse إنتاجي يستخدم نفس الكود، ولكن بدون إضافة الذكاء الاصطناعي بعد.

هل يمكن لأحد تحديد امتدادات postgres المطلوبة لإضافة الذكاء الاصطناعي؟ لم أتمكن من العثور على هذه المعلومات في دليل Discourse AI - Self-Hosted. المنشورات المشابهة للأخطاء مثل AI Plugin Build Error - 'bundle exec rake db:migrate' failed تستخدم سيناريو مختلف وقد لا تكون ذات صلة بحالة الاستخدام التشغيلي الخاصة بي هنا…

الأجزاء ذات الصلة من web_only.yaml

templates:
 - "templates/web.template.yml"
 ## إلغاء التعليق على السطر التالي لتمكين مستمع IPv6
 #- "templates/web.ipv6.template.yml"
 - "templates/web.ratelimited.template.yml"
 - "templates/web.socketed.template.yml"
 ## إلغاء التعليق على هذين السطرين إذا كنت ترغب في إضافة Lets Encrypt (https)
 #- "templates/web.ssl.template.yml"
 #- "templates/web.letsencrypt.ssl.template.yml"

[...]

## تكوين الاتصال بقواعد البيانات
 DISCOURSE_DB_SOCKET: ''
 DISCOURSE_DB_USERNAME: discourse2
 DISCOURSE_DB_NAME: discourse2
 DISCOURSE_DB_PASSWORD: xxx
 DISCOURSE_DB_HOST: 10.10.10.xx
# التخزين المؤقت لـ redis في الحاوية المجاورة
 DISCOURSE_REDIS_HOST: redis

[...]

## الإضافات تذهب هنا
## انظر https://meta.discourse.org/t/19157 للتفاصيل
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
[...]

## للتشغيل خلف موازن تحميل haproxy مع nginx محلي على مضيف الحاوية
 - 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 X-Forwarded-Proto https; # تم استبدال $thescheme;
       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-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

تحتاج إلى GitHub - pgvector/pgvector: Open-source vector similarity search for Postgres

إعجاب واحد (1)

نعم، شكرًا لك، لقد كان هذا هو المطلوب، ونجحت عملية التمهيد الآن. ربما يجب إضافة هذه المعلومة إلى دليل استضافة الذكاء الاصطناعي ذاتيًا…

كنت أعتقد أن المكون الإضافي يجب أن يقوم بهذه الخطوة الأساسية أثناء الترحيل. أنا متفاجئ من أن الأمر يقع على عاتق المستخدم لتشغيله. للأسف، نحن نستخدم مخطط bitnami، ليس لدي الكثير من التحكم في تشغيل هذا الامتداد، عبر المخطط. سأكره القيام بذلك يدويًا، ولكن يبدو أن هذا هو المسار إلى الأمام.

أود أن أفهم لماذا لا يضيف المكون الإضافي ذلك في البرنامج النصي الخاص بالترحيل؟ هل كان هناك سبب محدد؟

في حالتي، يقع جزء قاعدة البيانات الخاص بـ Discourse على خادم خارجي وليس ضمن الحزمة القياسية لحاويات Discourse. يجب تثبيت الامتداد المتجهي (vector extension) بأذونات مختلفة عن تلك الخاصة بمستخدم قاعدة البيانات لـ Discourse. لذلك، كان لابد من إجراء التثبيت يدويًا، وليس كخطوة ضمن عملية التهيئة الأولية (bootstrap process).

هذا صحيح. إليك ما نجح معي.

  • استخدام مخطط Bitnami Discourse
  • تجاوز Dockerfile لـ Bitnami Postgres وتثبيت Vector كـ root
  • عند بدء تشغيل Postgres، تم تشغيل برنامج نصي تهيئة لجعل المستخدم discourse مالك Vector
  • الباقي (بما في ذلك تثبيت المكون الإضافي) يتم الاعتناء به بواسطة مخطط Bitnami

لقد تعلمت هذا بالطريقة الصعبة. أتمنى لو كانت هناك بعض الوثائق حول هذا. يجب أن تذكر وثائق المكون الإضافي بعض المتطلبات الأساسية.

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