Estoy ejecutando Discourse en AWS ECS. Cuando intento ejecutar la aplicación, la pestaña de consola del navegador falla con las siguientes URLs. ¿He pasado por alto algún cambio de configuración?
He proporcionado el punto final anterior en el archivo database.yml.
Desplegué Discourse en ECS usando Docker. Cuando intento acceder a la aplicación, el navegador de red está obteniendo recursos de las siguientes URLs en lugar de https://discuss-stage.tllms.com/.
Apuesto a que se trata de un CDN mal configurado.
¿Podrías compartir tu config/discourse.conf?
Y busca en la configuración de tu sitio c0fbtc para ver si aparecen resultados.
Eso no parece correcto. Si yo fuera tú, verificaría si mi base de datos no es en realidad local y tiene un nombre extraño.
Creo que debería verse así:
# dirección del host para el servidor de la BD
# Esto se deja en blanco para que intente usar sockets primero
db_host = discourse-test.c0fbtc1q6bvm.ap-south-1.rds.amazonaws.com
# nombre de la base de datos donde se ejecuta Discourse
db_name = default
(Debo advertirte que estás intentando reinventar una rueda que ya funciona perfectamente. Además, algunas personas por aquí no estarán muy entusiastas en apoyarte, ya que esto no beneficia a la comunidad).
Sea lo que sea que hagas, eventualmente debes asegurarte de que esos valores terminen correctamente en tu discourse.conf. Si lo editaste manualmente, al menos deberías colocar el nombre de host de AWS en db_host y dejar db_name como default.
Estoy en el mismo equipo que Vijay. El caso de uso específico que estamos intentando abordar aquí es hacer un fork de Discourse e integrarlo en el GitHub de nuestra empresa. A partir de ahí, construiríamos e implementaríamos en AWS. La razón por la que queremos tenerlo en nuestro GitHub es mantener la flexibilidad de realizar cambios según nuestras necesidades. Nos gustaría contribuir de nuevo en la medida de lo posible. Dado que no encontramos un Dockerfile en el repositorio público de Discourse, terminamos creando el nuestro propio para construir la imagen de Docker. Además, utilizamos GitHub Actions para implementar el contenedor en el servicio ECS de AWS.
Considerando nuestro requisito, ¿crees que podríamos haber adoptado algún otro enfoque?
Sí. Mi recomendación es utilizar los repositorios oficiales de Discourse y discourse_docker, e implementar todos los cambios como plugins.
Usar el discourse_docker oficial te ahorrará problemas como el de este tema. Además, al no hacer un fork de Discourse y mantener todas tus modificaciones en plugins separados, evitas desviarte de la rama principal y te ahorras el enorme esfuerzo de tener que portar manualmente todos los cambios de la versión original a tu fork.
La curva de aprendizaje para desarrollar plugins se compensará en unas pocas semanas con el esfuerzo de fusionar las actualizaciones de la versión original, y a partir de entonces será mucho más eficiente.
Cuando utilizas el repositorio oficial de Discourse, también puedes considerar el alojamiento gestionado, y las personas estarán más dispuestas (y/o menos costosas) a ayudarte cuando lo necesites.
Gracias por sus aportaciones. Tengo un par de preguntas de seguimiento:
Con el enfoque de complementos, ¿existe la posibilidad de que podamos encontrar un cuello de botella con algunos requisitos que no sean posibles mediante complementos? Por ejemplo, gestionar roles de usuario de una manera muy personalizada.
¿Cómo se vería el flujo de trabajo de extremo a extremo si adoptamos discourse_docker y lo desplegamos en nuestra cuenta de AWS en ECS? Como mencioné, actualmente utilizamos GitHub Actions para desplegar en ECS en nuestra cuenta de AWS. ¿Qué estrategia de despliegue podemos utilizar desde un repositorio público mientras protegemos nuestras credenciales de AWS?
Siempre comienza con una copia del repositorio discourse_docker. Crea un archivo app.yml en su interior.
Usa el subcomando bootstrap del script launcher en tu copia de trabajo de discourse_docker para crear una imagen de Docker. Sube la imagen de Docker a un repositorio de Docker. Despliega esa imagen de Docker donde quieras.
Escribe plugins si los necesitas. Lista tus plugins personalizados en el archivo app.yml al igual que los otros plugins.
@ashish_rawat@Vijay_Vantipalli ¿Cómo configuraron Discourse en Docker dentro de ECS? Cuando lo intento en un servidor EC2, Discourse carga sin problemas. Pero cuando subo la imagen de Docker de Discourse al registro ECR y creo una tarea a partir de esa imagen, el contenedor no se ejecuta; solo obtengo el código de salida 1. Llevo más de una semana atascado. Me encantaría recibir sus consejos. ¡Gracias!
Creé una instancia RDS separada y un clúster de ElastiCache para Redis para esto.
¡Gracias por la respuesta rápida! Creo que solo me falta algo sencillo. Lo intentaré.
Perdona si esto está fuera de tu ámbito. Intenté añadir el “-e” que encontré en la aplicación start-cmd, pero hay otros argumentos como los siguientes: