Error de Bootstrap con el plugin de IA, bundle exec rake db:migrate

Tengo un error de arranque en la versión actual 3.5.0.beta7-dev tan pronto como incluyo el plugin de IA en una configuración de contenedor web_only. La misma compilación funciona bien sin este plugin.

Al leer Upgrade Error - rake db:migrate index on theme_field_id - #7 by pfaffman, sospecho que la causa raíz es una extensión faltante en el servidor postgres externo 13.20. El servidor tiene las extensiones hstore, pg_trgm, plpgsql, unaccent y también se utiliza para una instalación productiva de discourse que utiliza el mismo código, pero aún sin el plugin de IA.

¿Alguien puede identificar las extensiones de postgres requeridas para el plugin de IA? No pude encontrar esta información en la Guía de Discourse AI - Autoalojada. Publicaciones de errores similares como AI Plugin Build Error - 'bundle exec rake db:migrate' failed utilizan un escenario diferente y pueden no estar relacionados con mi caso de uso operativo aquí…

Partes relevantes de web_only.yaml

templates:
 - "templates/web.template.yml"
 ## Descomenta la siguiente línea para habilitar el oyente IPv6
 #- "templates/web.ipv6.template.yml"
 - "templates/web.ratelimited.template.yml"
 - "templates/web.socketed.template.yml"
 ## Descomenta estas dos líneas si deseas agregar Lets Encrypt (https)
 #- "templates/web.ssl.template.yml"
 #- "templates/web.letsencrypt.ssl.template.yml"

[...]

## configurar la conectividad a las bases de datos
 DISCOURSE_DB_SOCKET: ''
 DISCOURSE_DB_USERNAME: discourse2
 DISCOURSE_DB_NAME: discourse2
 DISCOURSE_DB_PASSWORD: xxx
 DISCOURSE_DB_HOST: 10.10.10.xx
# caché de redis en el contenedor vecino
 DISCOURSE_REDIS_HOST: redis

[...]

## Los plugins van aquí
## ver https://meta.discourse.org/t/19157 para detalles
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
[...]

## para operación detrás de un balanceador de carga haproxy con nginx local en el host del contenedor
 - 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; # reemplazado $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

Necesitas GitHub - pgvector/pgvector: Open-source vector similarity search for Postgres

1 me gusta

Sí, gracias, esto era. El arranque ahora es exitoso. Quizás esta información debería añadirse a la guía de autoalojamiento de IA…

Estaba pensando que el plugin debería realizar este paso básico durante la migración. Me sorprende que sea responsabilidad del usuario ejecutarlo. Desafortunadamente, estamos usando el gráfico de Bitnami, no tengo mucho control sobre la ejecución de esta extensión a través del gráfico. Odiaría hacerlo manualmente, pero parece que es el camino a seguir.

Me gustaría entender por qué el plugin no lo agrega en su script de migración. ¿Hubo alguna razón específica?

En mi caso, la parte de la base de datos de Discourse se encuentra en un servidor externo y no forma parte del paquete estándar de contenedores de Discourse. La extensión vector debe instalarse con permisos diferentes en comparación con el usuario de la base de datos para Discourse. Por lo tanto, la instalación tuvo que realizarse manualmente, no como un paso del proceso de arranque.

Es cierto. Esto es lo que me funcionó.

  • Usando el gráfico de Discourse de Bitnami
  • Anular el Dockerfile para Bitnami PostgreSQL e instalar Vector como root
  • Al inicio de PostgreSQL, ejecuté un script de inicialización para hacer que el usuario discourse fuera el propietario de Vector
  • El resto (incluida la instalación del plugin) es manejado por el gráfico de Bitnami

Lo aprendí de la manera difícil. Desearía que hubiera alguna documentación al respecto. La documentación del plugin debería mencionar algún requisito previo.

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