Si pretendes que esta instancia esté disponible en Internet, usar un dominio .local en app.yml romperá las cosas. Quizás esto es algo que solo pretendes usar en casa o solo para pruebas, solo pensé que valía la pena mencionarlo.
Suponiendo que tu red Docker funciona correctamente, haciendo que el contenedor sea accesible en esa dirección IP desde fuera de la máquina host, también necesitarías que DNS apunte discourse.simonz.local a esa dirección IP.
Parece que lo que está sucediendo es que el dominio se resuelve en la máquina host y no estás especificando el puerto (por ejemplo, discourse.simonz.local:1234) al intentar acceder a él, por lo que simplemente llega a nginx en lugar del contenedor docker.
Si quieres que Discourse esté disponible en un puerto diferente, probablemente no lo necesites en una dirección IP diferente. Si quieres que esté disponible en el puerto estándar, así como nginx en el puerto estándar, necesitas DNS para dirigirte a la IP correcta o necesitas nginx para proxy de Discourse.
Los dominios .local suelen ser anunciados por el sistema basándose en su nombre de host configurado. Discourse realmente no necesita hacer eso normalmente, por lo que el contenedor podría no tener nada para hacerlo.
Si quieres ir por la ruta de puerto estándar, IP diferente, DNS, eso está realmente fuera del alcance de Discourse y su configuración dependerá de varios factores en tu red.
Si tu objetivo es simplemente tener algo disponible en nginx, así como Discourse en el mismo host, te recomiendo el enfoque de proxy enlazado anteriormente. Aunque técnicamente es una instalación no compatible, es una configuración más común y en la que más gente podrá ayudar.