¿Cómo hago cambios en app/views/layouts/?

Pregunta rápida y sencilla:

¡Seguro que me faltan algunas neuronas!

Hicimos algunos cambios en el contenedor de la aplicación en uno de los archivos del directorio /var/www/discourse/app/views/layouts.

Luego, pensamos (como unos tontos) que podíamos simplemente reconstruir el contenedor con /var/discourse/launcher rebuild app (¡no!), pero cada vez que lo hacemos, nuestros cambios se sobrescriben.

No queremos hacer un fork de Discourse; pero nos gustaría reconstruir la aplicación usando launcher sin que se sobrescriban nuestros cambios locales.

¿Alguien puede decirnos cómo hacerlo?

¡Gracias!

Parece que hemos descubierto por qué todo lo que intentábamos resultaba en que nuestros archivos se sobrescribían en la aplicación durante el proceso de reconstrucción:

El motivo parece ser que launcher extrae la imagen base de Discourse, y esa imagen tiene un directorio .git y el archivo de configuración de git apunta naturalmente al repositorio principal de Discourse, lo que luego sobrescribe nuestros cambios:

launcher

pull_image() {
  # Añadir un solo reintento para evitar errores TLS de DockerHub
  $docker_path pull $image || $docker_path pull $image
}

Antes creíamos erróneamente que launcher construía la imagen (¡¿cómo pudimos pasar por alto eso?!), y ahora está claro que extrae una imagen base de Docker Hub.

¡A empezar de nuevo!

¿Hay alguna bandera que podamos configurar para evitar que launcher extraiga la imagen base y, en su lugar, la construya?

Hola @DBHacker

Parece que lo que podrías querer hacer es:

  1. realizar cambios en el contenedor base (como mencionaste)
  2. etiquetar y guardar esa imagen y
  3. subir esa imagen a tu propio repositorio de imágenes de Docker
  4. editar launcher para docker pull esa imagen base modificada desde tu repositorio

Espero que esto ayude de alguna manera pequeña.

De todos modos, esto no está soportado en meta (en absoluto, creo), así que estás por tu cuenta.

¡Feliz hacking! :slight_smile:

Nota: No lo he probado… ¡pero parece que te estás divirtiendo! :slight_smile:

1 me gusta

Debes realizar esos cambios en un complemento o en un componente de tema.

6 Me gusta

Hola @pfaffman

¡Estoy totalmente de acuerdo contigo! Los plugins y los componentes de temas son el camino a seguir. Ese método está completamente soportado y es bueno mantenerse sincronizado con el equipo de desarrollo de Meta.

También es bueno tener curiosidad, explorar posibilidades y alcanzar un nivel más profundo de comprensión de Discourse. Después de leer este tema ayer, creé un registro Docker local, etiqueté la imagen base de Discourse localmente, subí esa imagen a mi nuevo registro Docker (localhost) y luego reconstruí una aplicación de Discourse extrayendo la imagen base del registro de Discourse.

Creo que es divertido experimentar y aprender más sobre Discourse, y aprendí mucho de esta exploración y experimento como administrador de sistemas. Por supuesto, esta no es la forma en que ejecutaríamos una aplicación de producción, pero aprendí mucho al seguir los pasos necesarios para extraer la imagen base de Discourse desde localhost en lugar de remotamente, y fue sorprendentemente fácil de hacer. Por eso escribí este experimento para compartirlo con otros administradores de sistemas curiosos:

Espero que otros exploradores administradores de sistemas se beneficien de este experimento de alguna pequeña manera.

Mantente curioso

1 me gusta

Hay una forma muy sencilla de implementar esto sin preocuparse por las imágenes o crear un complemento. Siempre que solo estés modificando archivos planos existentes, puedes hacerlo desde el app.yml.

Busca hooks y pups. Varios otros guías ya utilizan este enfoque.

5 Me gusta

Gracias @neounix

A mí también me gusta aprender y probar cosas nuevas.

Algún día, cuando tenga tiempo, intentaré aprender más sobre Docker y los registros locales.

Por ahora, me quedaré con el desarrollo de plugins, ya que Discourse lo soporta y se ajusta al modelo de desarrollo de Discourse.

Como dijiste, aprender estas cosas es divertido, pero también es bueno mantenerse en la corriente principal.

:slight_smile:

2 Me gusta

Estoy de acuerdo.

Incluso después de experimentar con el registro Docker local y la imagen base local de Discourse, no pude obtener resultados consistentes (no estoy seguro de por qué, debe faltar algún detalle clave en la configuración).

Por otro lado, aprendí más sobre los registros Docker locales y cómo construir y gestionar uno.

Solo un experimento lateral con Docker… ¡definitivamente aprendí mucho!

1 me gusta

Sí, parece que la única opción viable es un plugin.

Gracias a todos por las respuestas y la ayuda.

2 Me gusta

¿Qué tipo de cambios en archivos estás realizando?

1 me gusta