He leído hilos como este y otros, y parece que hasta la fecha no hay una forma sencilla de desplegar una imagen de Discourse en algo como ECS, GKE o cualquier orquestador de contenedores que prefieras y que funcione sin complicaciones…
Yo uso Terraform para gestionar un clúster de Elasticache, una instancia de RDS y un clúster de ECS. Solo quiero poder decir: “Aquí está mi imagen de Discourse y aquí están las variables de entorno para conectarme a Postgres, Redis, SMTP, etc.”
¿Existe algo así en 2020? Parece que en todas las conversaciones anteriores sobre este tema no se llegó a una resolución satisfactoria, y seguimos atascados con los scripts personalizados de Discourse que desafían las convenciones de los contenedores y rompen la compatibilidad con la forma idiomática en que la gente utiliza los contenedores…
Esa es una suposición incorrecta. Todos esos son elementos de Discourse y deben ser controlados por Discourse dentro de su contenedor para garantizar una configuración exitosa.
Si te adentras en escenarios complejos con múltiples contenedores, eso solo es necesario para clientes grandes con muchos recursos, y te remito a nuestro servicio de alojamiento empresarial.
¿Por qué eso requiere este extraño script de arranque que lanza contenedores y actúa como orquestador?
¿Por qué no puede la imagen de Discourse aceptar variables de entorno y, en su punto de entrada, conectarse a todos esos recursos y crear las tablas que necesita, etc.? Otros servicios o aplicaciones web que dependen de capas de persistencia externas se han containerizado con éxito de esta manera. Simplemente los colocas en un ECS, EKS o lo que sea, les indicas dónde encontrar la base de datos, etc., y todo funciona perfectamente. ¿Es esto posible con Discourse?
Es porque somos lo contrario: una organización sin fines de lucro sin un presupuesto enorme, por lo que queremos mantener todo lo más económico posible al colocar todas nuestras aplicaciones empresariales en un único host de AWS ECS. Pero eso requiere que las aplicaciones individuales estén bien containerizadas y puedan definirse como definiciones de tareas de ECS, es decir, imágenes Docker autocontenidas.
Bueno, en cierto modo: dado que Discourse encaja fácilmente en un VPS de 5 $/mes como una imagen de instalación única y sencilla con Docker, no estoy seguro de que exprimir unos pocos centavos de esa cifra —con un aumento masivo en la dificultad de instalación y la complejidad del mantenimiento continuo— valga realmente la pena el esfuerzo. ¡Manténlo simple!
Como describe el enlace anterior, puedes crear contenedores y ejecutarlos con Kubernetes. He realizado despliegues en GKE para algunos clientes que insistieron en ello porque estaban vinculados a la plataforma.
Si tu objetivo es ahorrar dinero, la opción más económica es un plan de 5 a 10 dólares al mes.
Nuestras herramientas están optimizadas para el usuario más común, por lejos: grupos pequeños sin personal de TI especializado para gestionar la orquestación de contenedores.
Sin embargo, las partes necesarias están disponibles si necesitas ir a “Full Cloud”. El repositorio de origen que debes consultar es:
El archivo samples/web_only.yml en su interior muestra cómo utilizar recursos externos.
El script launcher también es capaz de construir una imagen de Docker personalizada con el subcomando bootstrap.