El lanzador falla: línea 334: byte NULL ignorado

La reconstrucción actual de la aplicación web falla con este error:

root@docker2:/var/discourse# ./launcher stop web_only && ./launcher rebuild data && ./launcher rebuild web_only
Se detectó la arquitectura x86_64.
+ /usr/bin/docker stop -t 600 web_only
web_only
Se detectó la arquitectura x86_64.
Asegurando que el lanzador esté actualizado
El lanzador está actualizado
Deteniendo el contenedor antiguo
+ /usr/bin/docker stop -t 600 data
data
./launcher: Línea 334: Advertencia: Sustitución de comando: se ignoró el byte nulo en la entrada.
2.0.20240825-0027: Extrayendo de discourse/base
Digest: sha256:6de68cb49198b5281f79ed9401b3fe818c854d220dcf0238549fe2f2adb19146
Estado: La imagen está actualizada para 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 -- : Leyendo desde stdin
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/cli.rb:54:in `split': secuencia de bytes inválida en 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/bin/pups:9:in `<top (required)>'
        from /usr/local/bin/pups:25:in `load'
        from /usr/local/bin/pups:25:in `<main>'
falló el arranque con código de salida 1
** FALLÓ EL ARRANQUE ** por favor, desplázate hacia arriba y busca mensajes de error anteriores, puede haber más de uno.

¿Alguna idea de cómo solucionar esto? Mi foro está actualmente no disponible después de este redespĺiegue :worried:

1 me gusta

Deberías poder recuperarlo con

./launcher start app

Eso reiniciará el contenedor antiguo.

No sé cuál podría ser el problema real, pero podría ser una regresión.

En este caso, web_only y data son contenedores separados y el inicio del contenedor web_only falla con

oot@docker2:/var/discourse# ./launcher start web_only
Se detectó la arquitectura x86_64.

iniciando contenedor existente
+ /usr/bin/docker start web_only
Respuesta de error del demonio: No se puede enlazar a un contenedor no en ejecución: /data COMO /web_only/data
Error: no se pudieron iniciar los contenedores: web_only

Quizás necesite iniciar manualmente a través de docker en este caso, ya que la base de datos está externa en otra máquina, vea este código en el yaml de web_only:

 ## conectar a la base de datos central de postgres
  DISCOURSE_DB_SOCKET: ''
  DISCOURSE_DB_USERNAME: discourse
  DISCOURSE_DB_PASSWORD: xxxxxxxxxx
  DISCOURSE_DB_HOST: 10.10.xx.xx
  DISCOURSE_REDIS_HOST: data

Lo siento. No sabía esa parte (o tal vez no leí atentamente).

Entonces necesitas

./launcher destroy web_only;./launcher start web_only

A menos que hayas ejecutado una limpieza que haya eliminado el contenedor, en cuyo caso probablemente estés en problemas.

Entonces me sorprende ver el error “cannot link”. Solo lo he visto cuando intenta usar un link de docker para hablar con otro contenedor en la misma máquina.

¡Oh! Sí, es el redis al que no puede conectarse. Tienes un contenedor data con el redis dentro, ¿verdad? El destroy start debería funcionar con la advertencia dada.

@pfaffman gracias, eso lo solucionó. Olvidé que el contenedor de datos también proporciona la funcionalidad de caché de Redis, pero de todos modos, ahora los contenedores están funcionando de nuevo.

¿Qué podemos hacer con el error de arranque del script del lanzador, línea 334? Nunca antes había visto este error. ¿Está el launcher_go/v2 listo para usar como reemplazo?

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 me gusta

Esto no es un error, es solo una advertencia

Este es el error.

Me parece que tu web-app.yml podría estar corrupto.

2 Me gusta

sí:

root@docker2:/var/discourse/containers# yamllint web_only.yml
web_only.yml
  5:81      error    línea demasiado larga (115 > 80 caracteres)  (line-length)
  8:1       warning  falta inicio de documento "---"  (document-start)
  14:4      warning  falta espacio inicial en comentario  (comments)
  14:3      warning  comentario no indentado como contenido  (comments-indentation)
  15:4      warning  falta espacio inicial en comentario  (comments)
  18:81     error    línea demasiado larga (85 > 80 caracteres)  (line-length)
  36:3      warning  comentario no indentado como contenido  (comments-indentation)
  37:4      warning  falta espacio inicial en comentario  (comments)
  43:81     error    línea demasiado larga (85 > 80 caracteres)  (line-length)
  44:81     error    línea demasiado larga (87 > 80 caracteres)  (line-length)
  58:81     error    línea demasiado larga (84 > 80 caracteres)  (line-length)
  67:81     error    línea demasiado larga (90 > 80 caracteres)  (line-length)
  68:4      warning  falta espacio inicial en comentario  (comments)
  77:81     error    línea demasiado larga (83 > 80 caracteres)  (line-length)
  79:4      warning  falta espacio inicial en comentario  (comments)
  99:81     error    línea demasiado larga (81 > 80 caracteres)  (line-length)
  110:81    error    línea demasiado larga (81 > 80 caracteres)  (line-length)
  117:81    error    línea demasiado larga (81 > 80 caracteres)  (line-length)
  126:43    error    espacios finales  (trailing-spaces)
  151:4     warning  falta espacio inicial en comentario  (comments)
  154:4     warning  falta espacio inicial en comentario  (comments)
  155:4     warning  falta espacio inicial en comentario  (comments)
  156:4     warning  falta espacio inicial en comentario  (comments)
  156:81    error    línea demasiado larga (131 > 80 caracteres)  (line-length)

Definitivamente necesita algo de limpieza :wink: