Lanceur échoue : ligne 334 : octet NULL ignoré

La reconstruction actuelle de l’application web échoue avec cette erreur :

root@docker2:/var/discourse# ./launcher stop web_only && ./launcher rebuild data && ./launcher rebuild web_only
x86_64 arch detected.
+ /usr/bin/docker stop -t 600 web_only
web_only
x86_64 arch detected.
Ensuring launcher is up to date
Launcher is up-to-date
Stopping old container
+ /usr/bin/docker stop -t 600 data
data
./launcher: Zeile 334: Warnung: Kommandoersetzung: NULL-Byte in der Eingabe ignoriert.
2.0.20240825-0027: Pulling from discourse/base
Digest: sha256:6de68cb49198b5281f79ed9401b3fe818c854d220dcf0238549fe2f2adb19146
Status: Image is up to date for discourse/base:2.0.20240825-0027
docker.io/discourse/base:2.0.20240825-0027
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2024-10-04T15:54:02.326983 #1]  INFO -- : Reading from stdin
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/cli.rb:54:in `split': invalid byte sequence in UTF-8 (ArgumentError)

        split = conf.split("_FILE_SEPERATOR_")
                           ^^^^^^^^^^^^^^^^^^
        from /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/cli.rb:54:in `run'
        from /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/bin/pups:9:in `<top (required)>'
        from /usr/local/bin/pups:25:in `load'
        from /usr/local/bin/pups:25:in `<main>'
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.

Des idées pour résoudre ce problème ? Mon forum est actuellement indisponible après ce redéploiement :worried :

1 « J'aime »

Vous devriez pouvoir le relancer avec

./launcher start app

Cela redémarrera l’ancien conteneur.

Je ne sais pas quel pourrait être le problème réel, mais il pourrait s’agir d’une régression.

Dans ce cas, web_only et data sont des conteneurs séparés et le démarrage du conteneur web_only échoue avec

root@docker2:/var/discourse# ./launcher start web_only
x86_64 arch detected.

starting up existing container
+ /usr/bin/docker start web_only
Error response from daemon: Cannot link to a non running container: /data AS /web_only/data
Error: failed to start containers: web_only

Peut-être que je dois démarrer manuellement via docker dans ce cas car la base de données est externe sur une autre machine, voir ce code dans le yaml web_only :

 ## connect to central postgres database
  DISCOURSE_DB_SOCKET: ''
  DISCOURSE_DB_USERNAME: discourse
  DISCOURSE_DB_PASSWORD: xxxxxxxxxx
  DISCOURSE_DB_HOST: 10.10.xx.xx
  DISCOURSE_REDIS_HOST: data

Désolé. Je ne connaissais pas cette partie (ou peut-être que je n’ai pas lu attentivement).

Alors vous devez

./launcher destroy web_only;./launcher start web_only

À moins que vous n’ayez effectué un nettoyage qui a supprimé le conteneur, auquel cas vous êtes probablement en difficulté.

Alors je suis surpris de voir l’erreur “cannot link”. Je n’ai vu cela que lorsqu’il essaie d’utiliser un link docker pour parler à un autre conteneur sur la même machine.

Oh ! Oui, c’est redis qu’il ne parvient pas à connecter. Vous avez un conteneur data avec redis dedans, n’est-ce pas ? Le destroy start devrait fonctionner avec la réserve mentionnée.

@pfaffman merci, ça a résolu le problème. J’avais oublié que le conteneur de données fournissait également la fonctionnalité de mise en cache Redis - mais quoi qu’il en soit, les conteneurs fonctionnent à nouveau.

Que pouvons-nous faire concernant l’erreur de bootstrap du script launcher, ligne 334 ? Je n’ai jamais vu cette erreur auparavant. Le launcher_go/v2 est-il prêt à être utilisé comme remplacement ?

330 set_template_info() {
    331     templates=$(find_templates $config_file)
    332
    333     arrTemplates=(${templates// / })
    334     config_data=$(cat $config_file)
    335
    336     input="hack: true"
    337
    338     for template in "${arrTemplates[@]}"
    339     do
    340       [ ! -z $template ] && {
    341         input="$input _FILE_SEPERATOR_ $(cat $template)"
    342       }
    343     done
    344
1 « J'aime »

Ce n’est pas l’erreur, c’est juste un avertissement

C’est l’erreur.

Il me semble que votre web-app.yml pourrait être corrompu.

2 « J'aime »

oui :

root@docker2:/var/discourse/containers# yamllint web_only.yml
web_only.yml
  5:81      error    ligne trop longue (115 > 80 caractères)  (line-length)
  8:1       warning  début de document manquant "---"  (document-start)
  14:4      warning  espace manquant au début du commentaire  (comments)
  14:3      warning  commentaire non indenté comme le contenu  (comments-indentation)
  15:4      warning  espace manquant au début du commentaire  (comments)
  18:81     error    ligne trop longue (85 > 80 caractères)  (line-length)
  36:3      warning  commentaire non indenté comme le contenu  (comments-indentation)
  37:4      warning  espace manquant au début du commentaire  (comments)
  43:81     error    ligne trop longue (85 > 80 caractères)  (line-length)
  44:81     error    ligne trop longue (87 > 80 caractères)  (line-length)
  58:81     error    ligne trop longue (84 > 80 caractères)  (line-length)
  67:81     error    ligne trop longue (90 > 80 caractères)  (line-length)
  68:4      warning  espace manquant au début du commentaire  (comments)
  77:81     error    ligne trop longue (83 > 80 caractères)  (line-length)
  79:4      warning  espace manquant au début du commentaire  (comments)
  99:81     error    ligne trop longue (81 > 80 caractères)  (line-length)
  110:81    error    ligne trop longue (81 > 80 caractères)  (line-length)
  117:81    error    ligne trop longue (81 > 80 caractères)  (line-length)
  126:43    error    espaces de fin  (trailing-spaces)
  151:4     warning  espace manquant au début du commentaire  (comments)
  154:4     warning  espace manquant au début du commentaire  (comments)
  155:4     warning  espace manquant au début du commentaire  (comments)
  156:4     warning  espace manquant au début du commentaire  (comments)
  156:81    error    ligne trop longue (131 > 80 caractères)  (line-length)

Il a vraiment besoin d’un peu de nettoyage :wink: