Problemas para entender el desarrollo de Discourse

¡Hola a todos!

Tengo un Discourse instalado en mi computadora local en

http://localhost:4200/

siguiendo esta guía. Aquí desarrollo Discourse, temas y complementos.

También tengo un Discourse instalado en una máquina virtual usando Docker, según esta guía. Ambas instalaciones funcionan maravillosamente.

No entiendo qué es Docker ni por qué los archivos en la máquina virtual son diferentes de los archivos en mi computadora local.

¿Qué sucederá si detengo Docker en la máquina virtual usando el comando d/shutdown_dev?

¿Cómo puedo sincronizar estas dos instalaciones usando Git?

¿Puedo instalar Docker en mi computadora local y para qué serviría?

Por favor, ayúdenme a entender estas preguntas.

Déjame intentar ilustrar el flujo:

  1. Trabaja en tu base de código (dentro de /discourse).
  2. Compila tu base de código en un contenedor Docker.
  3. Despliega ese contenedor Docker en tu servidor de producción.

Un caso de uso para ejecutar Docker localmente es probar tu contenedor Docker recién compilado antes de desplegarlo en tu servidor de producción.

1 me gusta

La presencia o ausencia de Docker es en gran medida irrelevante para el desarrollo de la mayoría de los componentes de plugins y temas. Esto es una preocupación separada. Yo no ejecuto una instancia de Docker en desarrollo.

Al desarrollar complementos para Discourse, no deberías obsesionarte con la versión exacta o la configuración de tu instancia de desarrollo frente a la de producción, porque normalmente no tienes control sobre la mayoría de las instancias en las que terminará tu plugin de todos modos si es de código abierto. Lo más importante es seguir buenas prácticas para hacer que tu complemento sea más robusto ante los cambios en el núcleo de Discourse. Incluso si solo estás desarrollando para tu propia instancia de Discourse, aún no tienes control sobre los cambios en el núcleo, por lo que se aplica el mismo enfoque.

Versiones ligeramente diferentes NO deberían hacer que tu plugin o componente de tema falle en general. Puede ocurrir, pero no es consistente. Mis plugins y componentes de tema (TC) pueden pasar meses sin necesidad de cambios, incluso trabajando en commits del núcleo con meses de diferencia.

Normalmente actualizo mi instancia de desarrollo a la última rama master cuando trabajo en cambios de plugins (correcciones o mejoras) para poder abordar cualquier cambio que rompa la compatibilidad. Esto se logra simplemente con un git pull, bundle install y db:migrate.

Las instancias de producción deben actualizarse simplemente a través de la interfaz web o la reconstrucción desde la línea de comandos.

Mi consejo sería sacar un plugin al público, atraer usuarios y aprender los baches del camino con la experiencia. No procrastines demasiado: ¡hazlo! Y no te preocupes por cometer errores, porque te ayudan a aprender.

6 Me gusta

Muchas gracias por tu respuesta.
Voy a intentar desarrollarlo.
Es decir, ¿puedo eliminar “git clone /github…docker” del archivo app.yaml?
¿Y luego reconstruirlo?

Haría este tipo de preguntas en el tema de desarrollo de Docker. Por ahora, no modificaría los scripts predeterminados utilizados para mantener el entorno de desarrollo con Docker a menos que tenga una razón muy sólida; presumiblemente, están ahí para ayudarte.

1 me gusta

Te entiendo. Gracias.

1 me gusta