Lors de l’exécution d’une installation basée sur Docker, et lors de la configuration de DISCOURSE_MAXMIND_LICENSE_KEY, le processus de création de l’image s’interrompt avec cette erreur :
/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>'
Lorsque DISCOURSE_MAXMIND_LICENSE_KEY est laissé vide, tout fonctionne correctement.
Testé avec les versions : stable et tests-passed.
La licence Maxmind fonctionne – les deux URL donnent accès aux fichiers .mmdb :
Juste une supposition (je ne suis pas un expert en Ruby ; soyez donc indulgent) – peut-être que l’extension ‘.mmdb’ pose problème dans FileHelper.download(...) quelques lignes plus bas :
L’ajout de “.mmdb” aux liens ci-dessus provoque une erreur Invalid edition ID.
Puisque j’ai eu le même problème et que je peux confirmer que lorsque je supprime la clé de licence, mes problèmes de reconstruction disparaissent comme par magie.
J’ai même, sur plusieurs jours, fait de mon mieux pour creuser le problème.
Je pense que j’ai raison, mais je pourrais aussi avoir tort.
Pendant la construction, il semble que les fichiers mmdb soient manquants, peut-être parce qu’ils ne sont pas présents dans l’image de base, ou plus probablement, parce qu’ils sont supprimés et/ou même pas téléchargés avant d’être chargés, d’où l’échec de la construction.
À bien y penser, l’appel à mmdb_download pointe vers du code qui essaie de télécharger le fichier.
J’ai réussi à télécharger les fichiers manuellement (depuis le conteneur Docker) avec wget, donc la licence fonctionne comme prévu.
Pour faire remonter ce sujet, il s’agit toujours d’un problème, je viens d’avoir exactement la même chose en ajoutant la clé et en décommentant le paramètre dans app.yml.
J’ai reçu cet avis lors de la mise à jour depuis la branche principale aujourd’hui :
Téléchargement de MaxMindDB... Les mises à jour de la base de données d'adresses IP MaxMind nécessitent une licence. Veuillez définir DISCOURSE_MAXMIND_LICENSE_KEY sur celle que vous avez générée sur https://www.maxmind.com. Les mises à jour de la base de données d'adresses IP MaxMind nécessitent une licence. Veuillez définir DISCOURSE_MAXMIND_LICENSE_KEY sur celle que vous avez générée sur https://www.maxmind.com.
Mais je n’ai jamais configuré de clé de licence pour cela, et je ne sais pas comment les intégrer de toute façon.
La mise à jour s’est quand même terminée, donc cela ne semble pas causer de problème, mais il s’agit peut-être d’une sorte d’erreur mineure.
Pouvez-vous publier l’erreur exacte que vous rencontrez ? Une modification connexe a été fusionnée au cours des dernières 24 heures, je soupçonne donc que vous pourriez avoir un problème légèrement différent de celui de l’OP (si vous êtes sur tests-passed) :
J’ai mis à jour app.yml pour inclure l’ID du compte.
Maintenant, je vois une erreur lors de la reconstruction (tests-passed) :
****************************************************************************************************
MaxMindDB (GeoLite2-City) n'a pas pu être téléchargé : Erreur 400
****************************************************************************************************
Message
MaxMindDB (GeoLite2-City) n'a pas pu être téléchargé : Erreur 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>'
Je viens de rencontrer cela moi-même sur une instance auto-hébergée que je possède. Extraits des journaux de mise à niveau ci-dessous.
Arrêt de 2 workers Unicorn, pour libérer de la mémoire
Arrêt de la file d'attente des tâches pour récupérer de la mémoire, le PID maître est 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 maintenant à dec486d Mise à jour des traductions (#213)
$ bundle install --retry 3 --jobs 4
Bundle complète ! 137 dépendances de Gemfile, 170 gems maintenant installées.
Les gems des groupes 'development' et 'test' n'ont pas été installées.
Les gems groupées sont installées dans `./vendor/bundle`
[...]
- dist/javascripts/squoosh/squoosh_resize.js : 4.53 kB (1.29 kB compressé)
Terminé en 89.56s.
Purge des fichiers temporaires
Compilation des assets
Téléchargement de MaxMindDB...
#<Thread:0x00007fe9902157b0 /var/www/discourse/lib/tasks/maxminddb.rake:62 run> terminé avec une exception (report_on_exception est vrai) :
/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>'
En cours de compression : 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
Compilation des Javascript et génération des Source Maps
[...]
cible de précompilation : color_definitions Light (Light)
cible de précompilation : color_definitions Light (air-light)
cible de précompilation : color_definitions Light (air-dark)
cible de précompilation : color_definitions Light (Base)
cible de précompilation : desktop_theme Dark
cible de précompilation : mobile_theme Dark
cible de précompilation : color_definitions Dark (Simple Dark)
cible de précompilation : color_definitions Dark (air-light)
cible de précompilation : color_definitions Dark (air-dark)
cible de précompilation : color_definitions Dark (Base)
CSS compilé : 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 : ÉCHEC DE LA MISE À NIVEAU
#<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>'
Démarrage de 2 workers Unicorn qui ont été arrêtés initialement
J’ai le même problème depuis un certain temps et j’ai dû désactiver l’intégration MaxMind afin de reconstruire.
Je pense que le problème a peut-être été résolu au moins sur tests-réussis, mais je suis sur la dernière version stable (3.2.2) donc j’ai supposé que je devrais attendre. Cependant, il y a un rapport du même problème avec la version 3.3.0, donc peut-être que cela nécessite un examen plus approfondi.
J’ai essayé ce qui suit et cela a semblé fonctionner :
Connexion SSH à mon serveur.
Modification de app.yml pour ajouter DISCOURSE_MAXMIND_ACCOUNT_ID: REDACTED
Exécution de ./launcher rebuild app
La reconstruction s’est terminée sans erreur apparente. Le site est opérationnel. Malheureusement, tant qu’un autre commit ne sera pas poussé vers discourse_docker, je ne pourrai pas tester la mise à jour via le tableau de bord d’administration pour voir si cela a résolu le problème ou non.
Edit : Il semble que bien que la reconstruction ait été réussie, MaxMind n’est pas fonctionnel.
J’ai essayé cela aussi, mais inclure le DISCOURSE_MAXMIND_ACCOUNT_ID n’a fait aucune différence pour moi car la reconstruction ne se termine toujours pas (avec la dernière version stable). Seule la suppression de DISCOURSE_MAXMIND_LICENSE_KEY semble fonctionner.
Journal
...
Compilation CSS terminée : 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'... à jour
Checking 'discourse-profile-custom-link' for 'default'... à jour
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.