Les conteneurs d'échantillons Beta/tests-passés ne démarrent pas

Avant de vous lancer dans ce voyage avec moi, veuillez noter que bien que cette erreur ait déjà été mentionnée deux fois sur ce forum (une et deux), la solution de « reconstruire le conteneur de données » n’a pas fonctionné. Je travaille avec des données complètement vides et je supprime tous les conteneurs/volumes/dossiers de stockage entre les tentatives.

Veuillez également noter que je base mes tests sur les fichiers d’exemple fournis. Ce n’est pas un plugin, j’ai essayé de supprimer tous les plugins.


J’ai des problèmes pour démarrer des conteneurs vides pour les dernières branches tests-passed et beta. Stable fonctionne comme prévu. L’erreur se produit avec standalone ou web-only (après avoir démarré data, bien sûr).

Afin d’exclure les erreurs de configuration, j’ai effectué les étapes suivantes :

  • Copié le fichier samples/standalone.yml dans containers/
  • Changé uniquement les éléments suivants dans le fichier :
    • Changé l’adresse SMTP en une valeur factice
    • Changé l’adresse discourse en une valeur factice
    • Changé l’emplacement des données partagées
    • Supprimé le port 443 et changé le mappage du port 80. Voici le résultat standalone.yml
    • Exécuté ./laucher rebuild standalone. Voici les logs complets rebuilding_standalone.txt

Et j’obtiens l’erreur suivante :

RubyZip 3.0 is coming!
**********************

The public API of some Rubyzip classes has been modernized to use named
parameters for optional arguments. Please check your usage of the
following classes:
  * `Zip::File`
  * `Zip::Entry`
  * `Zip::InputStream`
  * `Zip::OutputStream`

Please ensure that your Gemfiles and .gemspecs are suitably restrictive
to avoid an unexpected breakage when 3.0 is released (e.g. ~> 2.3.0).
See https://github.com/rubyzip/rubyzip for details. The Changelog also
lists other enhancements and bugfixes that have been implemented since
version 2.3.0.

I, [2022-07-24T01:58:05.415957 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake plugin:pull_compatible_all'
bundler: failed to load command: rake (/var/www/discourse/vendor/bundle/ruby/2.7.0/bin/rake)
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:308:in `check_for_activated_spec!': You have already activated uri 0.10.0, but your Gemfile requires uri 0.11.0. Since uri is a default gem, you can either remove your dependency on it or try updating to a newer version of bundler that supports uri as a default gem. (Gem::LoadError)
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:25:in `block in setup'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/spec_set.rb:140:in `each'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/spec_set.rb:140:in `each'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:24:in `map'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:24:in `setup'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler.rb:162:in `setup'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/setup.rb:20:in `block in <top (required)>'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/ui/shell.rb:136:in `with_level'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/ui/shell.rb:88:in `silence'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/setup.rb:20:in `<top (required)>'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:56:in `require_relative'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:56:in `kernel_load'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:23:in `run'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:483:in `exec'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:31:in `dispatch'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:25:in `start'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/exe/bundle:48:in `block in <top (required)>'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/friendly_errors.rb:120:in `with_friendly_errors'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/exe/bundle:36:in `<top (required)>'
	from /usr/local/bin/bundle:23:in `load'
	from /usr/local/bin/bundle:23:in `<main>'
I, [2022-07-24T01:58:05.702191 #1]  INFO -- : 
I, [2022-07-24T01:58:05.702665 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
bundler: failed to load command: rake (/var/www/discourse/vendor/bundle/ruby/2.7.0/bin/rake)
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:308:in `check_for_activated_spec!': You have already activated uri 0.10.0, but your Gemfile requires uri 0.11.0. Since uri is a default gem, you can either remove your dependency on it or try updating to a newer version of bundler that supports uri as a default gem. (Gem::LoadError)
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:25:in `block in setup'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/spec_set.rb:140:in `each'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/spec_set.rb:140:in `each'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:24:in `map'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/runtime.rb:24:in `setup'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler.rb:162:in `setup'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/setup.rb:20:in `block in <top (required)>'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/ui/shell.rb:136:in `with_level'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/ui/shell.rb:88:in `silence'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/setup.rb:20:in `<top (required)>'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:56:in `require_relative'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:56:in `kernel_load'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli/exec.rb:23:in `run'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:483:in `exec'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:31:in `dispatch'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/cli.rb:25:in `start'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/exe/bundle:48:in `block in <top (required)>'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/lib/bundler/friendly_errors.rb:120:in `with_friendly_errors'
	from /usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.3.18/exe/bundle:36:in `<top (required)>'
	from /usr/local/bin/bundle:23:in `load'
	from /usr/local/bin/bundle:23:in `<main>'
I, [2022-07-24T01:58:05.953429 #1]  INFO -- : 

J’ai également essayé l’approche à deux conteneurs, avec data et web_only. Web only a le même problème.

Entre chaque tentative, j’arrête et supprime tous les conteneurs, et je supprime également tous les dossiers de données.

La branche Stable fonctionne bien. Je ne pense pas que ce soit normal.


Pour donner du contexte, je suis dans une très mauvaise situation.

Je dois migrer urgemment mon installation Discourse du serveur actuel vers un nouveau serveur, car le serveur actuel sera arrêté dans quelques jours.

Le serveur actuel est en 2.9.0.beta7. Je peux démarrer un nouveau serveur en 2.8.6, mais je ne peux pas appliquer une sauvegarde du serveur actuel sur le nouveau serveur, car c’est une régression. Et je suis incapable de démarrer un nouveau serveur vide sur 2.9.0.beta7, car cela génère l’erreur ci-dessus.

Mon dossier de données sur le serveur actuel est suffisamment volumineux pour que je n’aie pas assez d’espace disque pour le compresser et le copier quelque part ; même si je le faisais, je suppose qu’il y aurait des conséquences à utiliser des données d’une version bêta plus récente dans une version plus ancienne. J’ai également essayé de « rétrograder » le serveur actuel, juste au cas où, mais je sais que ce n’est pas pris en charge et cela n’a de toute façon pas fonctionné.

Pourquoi êtes-vous obligé de rétrograder ? Pourquoi ne pouvez-vous pas vous assurer que l’hôte cible est le dernier ?

2 « J'aime »

Je ne veux pas faire de rétrogradation. Mais je ne peux pas démarrer un nouveau serveur sur 2.9.0.beta7 en me basant sur le message d’erreur que j’ai mis dans ce post. Je ne peux démarrer un nouveau serveur que sur 2.8.6. J’ai essayé plusieurs configurations différentes basées sur les fichiers d’exemple et mes propres fichiers, et ni beta ni tests-passed ne démarrent. Je ne suis pas sûr si cette information n’est pas claire dans le premier message, dans le fichier des conteneurs, ou dans les fichiers journaux.

En toute honnêteté, tout ce dont j’ai besoin, c’est de m’assurer que je peux déplacer mes données d’un serveur à un autre. Peu importe la version exacte, mais j’ai besoin d’un nouveau serveur opérationnel et de transférer les anciennes données vers le nouveau serveur.

L’ancien serveur est sur 2.9.0.beta7 à l’heure actuelle. J’ai donc besoin soit d’un nouveau serveur qui puisse démarrer sur la dernière version (ce qui ne fonctionne pas), soit d’un moyen de transférer les données vers une nouvelle version 2.8.6, qui est la seule version sur laquelle j’ai pu le démarrer.

1 « J'aime »

Désolé, je comprends maintenant. Faut-il donc se concentrer sur cette erreur ?

Idéalement, oui. Obtenir le nouveau serveur avec la dernière version serait le plus simple et le plus facile pour moi.

Mais si ce n’est pas réalisable pour une raison quelconque, s’il existe une autre solution de contournement que je pourrais utiliser, je serais également intéressé. Je ne suis pas en position d’être puriste en matière de versions.

De plus, si cela peut aider, voici les informations docker sur le serveur :

# docker info
Client:
 Context:    default
 Debug Mode: false

Server:
 Containers: 2
  Running: 0
  Paused: 0
  Stopped: 2
 Images: 5
 Server Version: 20.10.12
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: nvidia runc io.containerd.runc.v2 io.containerd.runtime.v1.linux
 Default Runtime: runc
 Init Binary: docker-init
 containerd version:
 runc version:
 init version:
 Security Options:
  apparmor
  seccomp
   Profile: default
  cgroupns
 Kernel Version: 5.15.0-41-generic
 Operating System: Ubuntu 22.04 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 2
 Total Memory: 5.797GiB
 Name: maji
 ID: OIRP:TYAE:HIPS:SIF3:NZRF:22QI:GO5A:64A4:OP2O:ALVA:PPLN:4TOH
 Docker Root Dir: /data/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

J’exécute le lanceur en tant que root. Maintenant, j’ai exécuté toutes sortes de conteneurs docker sur des machines avec la même configuration, et je n’ai eu aucun problème.

Maintenant, je ne suis pas sûr si le problème pourrait être potentiellement des permissions de fichiers, l’erreur ne me donne pas du tout cette impression.

/opt/discourse# ls -la
total 140
drwxr-xr-x 14 root root  4096 Jul 24 01:26 .
drwxr-xr-x  7 root root  4096 Jul 15 07:23 ..
drwxr-xr-x  8 root root  4096 Jul 24 02:30 .git
drwxr-xr-x  3 root root  4096 Jul 15 07:23 .github
-rw-r--r--  1 root root   309 Jul 15 07:23 .gitignore
-rw-r--r--  1 root root  1099 Jul 15 07:23 LICENSE
-rw-r--r--  1 root root  8285 Jul 15 07:23 README.md
drwxr-xr-x  2 root root  4096 Jul 15 07:23 bin
drwxr-xr-x  2 root root  4096 Jul 24 02:34 cids
drwxr-xr-x  2 root root  4096 Jul 24 02:30 containers
-rwxr-xr-x  1 root root 11956 Jul 15 07:23 discourse-doctor
-rwxr-xr-x  1 root root 27053 Jul 15 07:23 discourse-setup
drwxr-xr-x  8 root root  4096 Jul 15 07:23 image
-rwxr-xr-x  1 root root 22547 Jul 15 07:23 launcher
drwxr-xr-x  2 root root  4096 Jul 24 01:39 samples
drwxr-xr-x  2 root root  4096 Jul 15 07:23 scripts
drwxr-xr-x  2 root root  4096 Jul 15 07:23 shared
drwxr-xr-x  3 root root  4096 Jul 15 07:23 templates
drwxr-xr-x  2 root root  4096 Jul 15 07:23 tests
/opt/discourse# ls -la containers/
total 16
drwxr-xr-x  2 root root 4096 Jul 24 02:30 .
drwxr-xr-x 14 root root 4096 Jul 24 01:26 ..
-rw-r--r--  1 root root    0 Jul 15 07:23 .gitkeep
-rw-r--r--  1 root root 1258 Jul 24 02:08 data.yml
-rw-r--r--  1 root root 3542 Jul 24 02:30 web.yml
/opt/discourse# cd /data/discourse/
/data/discourse# ls -la
total 16
drwxr-xr-x 4 root root 4096 Jul 24 02:06 .
drwxr-xr-x 5 root root 4096 Jul 23 11:58 ..
drwxr-xr-x 6 root root 4096 Jul 24 02:09 data
drwxr-xr-x 7 root root 4096 Jul 24 02:34 web

Essayez de copier les lignes suivantes sous les lignes qui disent bundle install (autour de la ligne 160)

  - exec:
      cd: $home
      cmd:
        - su discourse -c 'gem update uri'

J’ai essayé d’ajouter cela au bloc run, après exec: echo \"Beginning of custom commands\", et je suppose que c’était trop tard.

Je l’ai donc ajouté à hooks: -> after_code:

J’ai obtenu ceci :

I, [2022-07-24T12:13:24.641982 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'gem update uri'
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /usr/local/lib/ruby/gems/2.7.0 directory.
I, [2022-07-24T12:13:29.392041 #1]  INFO -- : Updating installed gems
Updating uri

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'gem update uri' failed with return #<Process::Status: pid 132 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "cmd"=>["su discourse -c 'gem update uri'"]}

J’ai continué et supprimé su discourse au cas où cela aiderait. Cela semble avoir progressé, et j’ai rencontré une autre erreur :

I, [2022-07-24T12:21:17.497935 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile'
sh: 1: yarn: not found
I, [2022-07-24T12:21:19.397390 #1]  INFO -- :

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 5373 exit 127>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'

J’ai pensé que je devrais alors installer yarn manuellement ? J’ai supprimé tous les plugins, y compris docker_manager, par précaution. Il demandait toujours yarn, alors j’ai pensé autant l’installer :

I, [2022-07-24T12:37:42.295754 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake plugin:pull_compatible_all'
WARNING: Plugins were activated before running `rake plugin:pull_compatible_all`
  You should prefix this command with LOAD_PLUGINS=0
I, [2022-07-24T12:37:44.807237 #1]  INFO -- :
I, [2022-07-24T12:37:44.807548 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
I, [2022-07-24T12:37:48.578845 #1]  INFO -- :
I, [2022-07-24T12:37:48.579098 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile'
error Command "ember" not found.
I, [2022-07-24T12:37:50.795001 #1]  INFO -- : yarn run v1.22.19
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 5409 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}

Il a donc commencé à se plaindre d’ember. Même si j’ai essayé de l’installer manuellement.

Voici à quoi ressemble mon after_code actuellement :

hooks:
  after_code:
    - exec:
        cd: $home
        cmd:
          - gem update uri
          - npm install -g yarn
          - npm install -g ember
        #- exec:
        # cd: $home/plugins
        #cmd:
            #- git clone https://github.com/discourse/docker_manager.git

Je ne suis pas sûr que ce soit le bon chemin.

La bonne nouvelle est que cette commande s’exécute apparemment maintenant.

J’avais remarqué l’absence de LOAD_PLUGINS auparavant mais je ne l’avais pas mentionné. L’avez-vous supprimé ? Il est présent dans le modèle original. Si vous avez modifié le modèle, ce ne serait pas de trop de voir s’il y a d’autres choses que vous avez changées. Ou peut-être êtes-vous sur une ancienne version. Avez-vous fait un git pull avant de reconstruire l’application ?

3 « J'aime »

Je n’ai pas touché à ça. Je ne le trouve ni dans les fichiers d’exemple web_only.yml ni dans standalone.yml. Je ne l’ai pas ajouté, mais ce n’est qu’un avertissement, j’imagine ?

L’erreur que j’avais est liée à ember, pas aux plugins.


Pour être honnête, j’ai fait git pull une infinité de fois, mais c’était assez stable et aucun nouveau commit n’a été récupéré.

En obtenant le lien exact vers le commit, j’ai réalisé que mon automatisation récupérait la branche master, et je suppose que cela ne donne même pas d’avertissement ni quoi que ce soit. Autant que j’aie récupéré main, cela a fonctionné. Il semble que cela ait été changé l’année dernière.

1 « J'aime »

Je sais, mais l’absence de LOAD_PLUGINS=0 était pour moi un signe que vous utilisiez une ancienne version du dépôt.

1 « J'aime »

Il aurait été agréable d’avoir une ligne de log au début du lanceur faisant référence au fait que j’exécutais la branche héritée. Cela aurait économisé beaucoup d’efforts.

Je ne sais pas si les attentes concernant le lanceur sont qu’il changerait automatiquement la branche git, mais cela ne s’est certainement pas produit pour moi.

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