Instalamos Discourse con éxito en Digital Ocean, todo funciona bien, pero no logramos encontrar en absoluto dónde están los archivos reales de Discourse. Queríamos probar algunas modificaciones y desarrollar algunos complementos, pero no encontramos ningún archivo. Utilizamos Filezilla para iniciar sesión en el sitio. Sin embargo, no podemos encontrar ninguno de los archivos de la aplicación Discourse en ningún lugar, por ejemplo, discourse/app. Entramos en la carpeta var/discourse y no había nada. Luego en var/discourse/containers y tampoco había nada. Ejecutamos SSH .launcher enter app y podemos ver que nuestros archivos en la terminal están ubicados en var/www, pero este directorio no existe cuando nos conectamos al servidor. Probamos var/lib/docker/containers y tampoco había nada. ¿Dónde se encuentran exactamente los archivos de Discourse? Gracias.
Así es como funciona Docker: los archivos reales están dentro de un contenedor de Docker y, por lo tanto, son “invisibles” al usar FileZilla.
Si deseas probar modificaciones en Discourse, como plugins y temas, no podrás hacerlo en una instalación de producción.
Para temas, consulta Beginner's guide to using Discourse Themes
Para plugins, consulta Developing Discourse Plugins - Part 1 - Create a basic plugin
¿Hay otra forma de instalar esto que no sea usando Docker? He leído todas las guías, pero es bastante difícil desarrollar con archivos ocultos.
El paradigma es muy diferente al de las aplicaciones PHP de los años 90, donde era normal editar archivos en los servidores de producción mediante FTP.
Los cambios en el comportamiento de Discourse deben ser proyectos separados, que residan en su propio repositorio de Git y que utilicen las APIs existentes de plugins y temas.
Así que, supongamos que deseas agregar un campo adicional al compositor de temas donde el usuario pueda seleccionar su color favorito. Crearás un nuevo plugin de Discourse siguiendo Developing Discourse Plugins - Part 1 - Create a basic plugin, luego lo subirás a GitHub en un repositorio llamado discourse-favorite-color y lo instalarás en tu instancia usando Install plugins on a self-hosted site
Vale, entendido. Tendré que acostumbrarme a esta nueva forma de desarrollar. Solo por curiosidad, ¿cada vez que añadimos un plugin tenemos que ejecutar ./launcher rebuild app? ¿Y luego hacerlo de nuevo al modificar el plugin?
Sí.
Sin embargo, eso es algo que debería ocurrir con poca frecuencia, ya que se trata de tu instalación de producción.
Para fines de desarrollo y pruebas, la primera parte de Developing Discourse Plugins - Part 1 - Create a basic plugin te indica cómo configurar un “Entorno de Desarrollo” donde puedes realizar cambios y probar simplemente actualizando tu navegador.
Eso es lo que hago, aunque también puedes realizar una actualización a través de la interfaz web en /admin/upgrade.
Además, una instalación de 2 contenedores te permite actualizar de la siguiente manera:
./launcher bootstrap web_only
./launcher destroy web_only; ./launcher start web_only
de modo que tu sitio estará caído solo el tiempo que tarde en arrancar el nuevo servidor (aproximadamente un minuto).