Supongo que podría funcionar bien usando la plantilla independiente o escribiendo un deploy.yml con todos los contenedores de dependencias como accesorios.
La documentación indica que la plantilla independiente tiene la desventaja de tiempos de inactividad más largos durante las actualizaciones, pero eso no sería un problema con Kamal gracias a sus despliegues sin tiempo de inactividad (mantiene el contenedor antiguo y solo cambia el proxy inverso al nuevo cuando responde con un HTTP 200).
Pero eso no funcionará porque no puedes tener dos contenedores accediendo a la misma base de datos PostgreSQL al mismo tiempo. Tendrías que construir tu propio contenedor para que lance o use los nuevos que aún no están soportados y que hacen cosas como migrar la base de datos al iniciar. Necesitarías a alguien que conozca o entienda bastante tanto de Discourse como de Kamal para lograrlo. Y como nadie ha respondido aún, parece que esa persona no está rondando por aquí.
Seguiría la instalación estándar para empezar y luego vería cómo hacer que algo funcione con Kamal.