Discourse_docker: el lanzador falla al arrancar (solución incluida)

La creación de una imagen de contenedor nueva falla. Hace unos días funcionaba, “nada cambió”, y hoy falla. Registro:

[0:02:27] Aún trabajando en:
[0:02:27]   v8
________ ejecutando 'vpython third_party/depot_tools/update_depot_tools_toggle.py
--disable' en
'/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/libv8-8.4.255.0/vendor'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/libv8-8.4.255.0/vendor/depot_tools/.cipd_bin/.cipd/pkgs/0/fI6WggdkRyN1r91MnTeApc2_gyTtXfYpueHZVLcaF8gC/vpython:
no se pudieron resolver las opciones: no se pudo resolver el script de Python: stat
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/libv8-8.4.255.0/vendor/third_party/depot_tools/update_depot_tools_toggle.py:
no existe el archivo o el directorio
Error: El comando 'vpython third_party/depot_tools/update_depot_tools_toggle.py
--disable' devolvió un estado de salida distinto de cero (1) en
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/libv8-8.4.255.0/vendor

...

** FALLÓ LA CREACIÓN ** por favor, desplácese hacia arriba y busque mensajes de error anteriores; puede haber más de uno.
./discourse-doctor puede ayudar a diagnosticar el problema.

Investigando más a fondo: Para libv8 ya se ha reportado un problema similar en GitHub, relacionado con un cambio de versión en el generador (builder) de Ruby. Durante la creación, se realiza una actualización del generador. Creo que el problema parece estar relacionado con la versión 2.2.15 de bundler (lanzada ayer). Para ser honesto: no soy experto en Ruby, así que quizás el problema real sea ligeramente diferente.

Sin embargo, el siguiente workaround funcionó para mí: Cambie la línea 148 en templates/web.template.yml de
- gem update bundler
a
- gem install bundler -v 2.2.14

Saludos,

Michael

¿Fue esto al intentar compilar en la rama estable?

¡Buen punto! Rama master de discourse_docker, parámetros: version: stable en app.yml

A menos que tengas una razón para ejecutar stable y estés dispuesto a prestar especial atención a ciertos aspectos (como este problema), te resultará mejor usar tests-passed, ya que está mucho más probado y es la versión que Discourse utiliza para su alojamiento.

Ciertamente vale la pena depurar esto; si bundler acaba de lanzar un error, queremos tener una solución alternativa implementada rápidamente.

@kris.kotlarek ¿puedes reproducir el problema en Digital Ocean?

Hay varios problemas en juego aquí. Por ahora, la solución más sencilla es actualizar la versión del Gemfile en la rama estable. Consulta el mensaje del commit para más detalles:

@m.abi, por favor, intenta reconstruir de nuevo; debería funcionar ahora.

Espero que quien ejecute la versión stable obtenga, bueno, más estabilidad: idealmente, solo correcciones de seguridad y poco más. Al menos, esa es nuestra interpretación de la rama estable. Además, no es necesario prestar más atención a la versión estable porque podría romperse con más frecuencia que la rama de vanguardia.

Bueno, como muestra este caso, la realidad es un poco menos así de lo que podrías esperar. Hacen un buen trabajo arreglando las cosas rápidamente (como en este caso), pero ellos (¿principalmente?) no alojan la versión stable por sí mismos, por lo que está un poco menos probada que tests-passed. Así que, excepto justo cuando hay un nuevo lanzamiento de stable, considero que tests-passed es una opción un poco más “segura”. No todos están de acuerdo.

@david ¡La compilación funciona! ¡Gracias!