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.
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?
¡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.
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.
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!