Al ejecutar una instalación basada en Docker y configurar DISCOURSE_MAXMIND_LICENSE_KEY, el proceso de creación de la imagen se interrumpe con este error:
/var/www/discourse/lib/discourse_ip_info.rb:48:in `mmdb_download': undefined method `path' for nil:NilClass (NoMethodError)
filename = File.basename(gz_file.path)
^^^^^
from /var/www/discourse/lib/tasks/maxminddb.rake:67:in `block (3 levels) in <main>'
from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `each'
from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `block (2 levels) in <main>'
Al dejar DISCOURSE_MAXMIND_LICENSE_KEY vacío, todo funciona bien.
Probado con las versiones: stable y tests-passed.
La licencia de Maxmind funciona, por lo que ambas URL proporcionan acceso a los archivos .mmdb:
Solo una suposición (no soy un experto en Ruby; así que sean amables conmigo) – ¿quizás la extensión ‘.mmdb’ causa problemas en FileHelper.download(...) un par de líneas más abajo?:
Añadir “.mmdb” a los enlaces proporcionados anteriormente causa un error de Invalid edition ID.
Dado que he estado teniendo el mismo problema y puedo confirmar que al borrar la clave de licencia, mis problemas de reconstrucción desaparecen mágicamente.
Incluso durante un par de días, he intentado por todos los medios investigar el problema.
Creo que lo tengo bien, pero también podría estar equivocado.
Durante la compilación, parece que faltan los archivos mmdb, quizás debido a que no están presentes en la imagen base, o más probablemente, a que se eliminan y/o ni siquiera se descargan antes de cargarse, de ahí que la compilación falle.
Ahora que lo pienso, la llamada a mmdb_download apunta a código que intenta descargar el archivo.
He descargado los archivos manualmente (desde dentro del contenedor de Docker) con wget, por lo que la licencia funciona como se esperaba.
Solo para confirmar que esto sigue siendo un problema, me acaba de ocurrir exactamente lo mismo al añadir la clave y descomentar la configuración en app.yml.
Recibí este aviso al actualizar desde la rama principal hoy:
Descargando MaxMindDB... Las actualizaciones de la base de datos de IP de MaxMind requieren una licencia. Por favor, establezca DISCOURSE_MAXMIND_LICENSE_KEY con una que haya generado en https://www.maxmind.com. Las actualizaciones de la base de datos de IP de MaxMind requieren una licencia. Por favor, establezca DISCOURSE_MAXMIND_LICENSE_KEY con una que haya generado en https://www.maxmind.com.
Pero nunca configuré una clave de licencia para esto, y no sé cómo integrarlas de todos modos.
La actualización aún se completó, por lo que esto no parece estar causando ningún problema, pero puede ser algún tipo de error menor.
¿Puedes publicar el error exacto que estás viendo? Hubo un cambio relacionado fusionado en las últimas 24 horas, así que sospecho que puedes tener un problema ligeramente diferente al del OP (si estás en tests-passed):
****************************************************************************************************
MaxMindDB (GeoLite2-City) no se pudo descargar: Error 400
****************************************************************************************************
Mensaje
MaxMindDB (GeoLite2-City) no se pudo descargar: Error 400
Backtrace
/var/www/discourse/lib/tasks/maxminddb.rake:83:in `rescue in block (2 levels) in <main>'
/var/www/discourse/lib/tasks/maxminddb.rake:70:in `block (2 levels) in <main>'
Me encontré con esto en una instancia autoalojada que tengo. Extractos de los registros de actualización a continuación.
Deteniendo 2 trabajadores de Unicorn, para liberar memoria
Deteniendo la cola de trabajos para recuperar memoria, el pid principal es 2132120
$ cd /var/www/discourse/plugins/docker_manager && git fetch --tags --prune-tags --prune --force
$ cd /var/www/discourse/plugins/docker_manager && git reset --hard HEAD@{upstream}
HEAD está ahora en dec486d Actualizar traducciones (#213)
$ bundle install --retry 3 --jobs 4
¡Bundle completo! 137 dependencias de Gemfile, 170 gems instaladas ahora.
Las gemas en los grupos 'development' y 'test' no se instalaron.
Las gemas empaquetadas se instalan en `./vendor/bundle`
[...]
- dist/javascripts/squoosh/squoosh_resize.js: 4.53 kB (1.29 kB comprimido con gzip)
Hecho en 89.56s.
Purgando archivos temporales
Empaquetando activos
Descargando MaxMindDB...
#<Thread:0x00007fe9902157b0 /var/www/discourse/lib/tasks/maxminddb.rake:62 run> terminado con excepción (report_on_exception es true):
/var/www/discourse/lib/discourse_ip_info.rb:48:in `mmdb_download': undefined method `path' for nil:NilClass (NoMethodError)
filename = File.basename(gz_file.path)
^^^^^
from /var/www/discourse/lib/tasks/maxminddb.rake:67:in `block (3 levels) in <main>'
from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `each'
from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `block (2 levels) in <main>'
Omitiendo: break_string-cc617154cd957804f2f6a1f3bc68258c9cdca3d4b9a322bf777d145fed04790e.js ya comprimido
Omitiendo: service-worker-fadf8e4b5a6844dadaf6c3f1fb335fdd9dcb030f2bc22fcb96537679dfd2fa2d.js ya comprimido
Comprimiendo: locales/i18n-3b40e842fd72b9bcc74ea83e094c823cd9ca535e4ecc5e78722e6f99d3656137.js
gzip -f -c -9 /var/www/discourse/public/assets/locales/i18n-3b40e842fd72b9bcc74ea83e094c823cd9ca535e4ecc5e78722e6f99d3656137.js > /var/www/discourse/public/assets/locales/i18n-3b40e842fd72b9bcc74ea83e094c823cd9ca535e4ecc5e78722e6f99d3656137.js.gz
Comprimiendo Javascript y generando mapas de origen
[...]
objetivo de precompilación: color_definitions Light (Light)
objetivo de precompilación: color_definitions Light (air-light)
objetivo de precompilación: color_definitions Light (air-dark)
objetivo de precompilación: color_definitions Light (Base)
objetivo de precompilación: desktop_theme Dark
objetivo de precompilación: mobile_theme Dark
objetivo de precompilación: color_definitions Dark (Simple Dark)
objetivo de precompilación: color_definitions Dark (air-light)
objetivo de precompilación: color_definitions Dark (air-dark)
objetivo de precompilación: color_definitions Dark (Base)
CSS compilado: 2024-05-15 18:13:29 UTC
/var/www/discourse/lib/discourse_ip_info.rb:48:in `mmdb_download': undefined method `path' for nil:NilClass (NoMethodError)
filename = File.basename(gz_file.path)
^^^^^
from /var/www/discourse/lib/tasks/maxminddb.rake:67:in `block (3 levels) in <main>'
from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `each'
from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `block (2 levels) in <main>'
Docker Manager: FALLÓ AL ACTUALIZAR
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:210:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:111:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/commands.rb:18:in `<main>'
internal:/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb:37:in `require'
internal:/usr/local/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb:37:in `require'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/bootsnap-1.18.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
bin/rails:18:in `<main>'
Iniciando 2 trabajadores de Unicorn que se detuvieron inicialmente
He estado teniendo el mismo problema durante un tiempo y tuve que deshabilitar la integración de MaxMind para poder reconstruir.
Creo que el problema puede haberse solucionado al menos en tests-passed, pero estoy en la última versión estable (3.2.2) así que asumí que tendría que esperar. Sin embargo, hay un informe de lo mismo con la 3.3.0, así que quizás esto necesite una revisión más detallada.
Edité app.yml para añadir DISCOURSE_MAXMIND_ACCOUNT_ID: REDACTED
Ejecuté ./launcher rebuild app
La reconstrucción se completó sin errores aparentes. El sitio está en funcionamiento. Desafortunadamente, hasta que no se envíe otro commit a discourse_docker, no podré probar la actualización a través del panel de administración para ver si eso lo resolvió o no.
Edición: Parece que, si bien la reconstrucción fue exitosa, MaxMind no funciona.
También he probado eso, pero incluir DISCOURSE_MAXMIND_ACCOUNT_ID no marcó ninguna diferencia para mí, ya que la reconstrucción todavía no finaliza (con la última versión estable). Solo omitir DISCOURSE_MAXMIND_LICENSE_KEY parece funcionar.
Log
...
Compilación de CSS completada: 2024-05-15 20:34:22 UTC
/var/www/discourse/lib/discourse_ip_info.rb:48:in `mmdb_download': undefined method `path' for nil:NilClass (NoMethodError)
filename = File.basename(gz_file.path)
^^^^^
from /var/www/discourse/lib/tasks/maxminddb.rake:67:in `block (3 levels) in <main>'
from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `each'
from /var/www/discourse/lib/tasks/maxminddb.rake:65:in `block (2 levels) in <main>'
I, [2024-05-15T20:34:22.860678 #1] INFO -- : Checking 'Category Icons' for 'default'... up to date
Checking 'discourse-profile-custom-link' for 'default'... up to date
Downloading MaxMindDB...
Compressing Javascript and Generating Source Maps
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'SKIP_EMBER_CLI_COMPILE=1 bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 1399 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec failed with the params {"cd"=>"$home", "tag"=>"precompile", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'SKIP_EMBER_CLI_COMPILE=1 bundle exec rake themes:update assets:precompile'"]}
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.