Definir um IP personalizado não funciona?

Se você pretende que esta instância esteja disponível na internet, usar um domínio .local em app.yml vai quebrar as coisas. Talvez seja algo que você só pretende usar em casa ou apenas para testes, achei que valia a pena mencionar.

Assumindo que sua rede Docker funcione corretamente, tornando o contêiner acessível nesse endereço IP de fora da máquina host, você também precisaria que o DNS apontasse discourse.simonz.local para esse endereço IP.

Parece que o que está acontecendo é que o domínio está resolvendo para a máquina host e você não está especificando a porta (por exemplo, discourse.simonz.local:1234) ao tentar acessá-lo, então ele está apenas alcançando o nginx em vez do contêiner Docker.

Se você quiser que o Discourse esteja disponível em uma porta diferente, você provavelmente não precisa dele em um endereço IP diferente. Se você quiser que ele esteja disponível na porta padrão, bem como o nginx na porta padrão, você precisa que o DNS o direcione para o IP correto ou você precisa que o nginx faça proxy para o Discourse.

Domínios .local são tipicamente anunciados pelo sistema com base em seu nome de host configurado. O Discourse realmente não precisa de nada para fazer isso normalmente, então o contêiner pode não ter nada para isso.

Se você quiser seguir o caminho da porta padrão, IP diferente, rota DNS, isso está realmente fora do escopo do Discourse e sua configuração dependerá de vários fatores em sua rede.

Se seu objetivo é apenas ter algo disponível no nginx, bem como no Discourse no mesmo host, eu recomendaria a abordagem de proxy vinculada acima. Embora também seja tecnicamente uma instalação não suportada, é uma configuração mais comum e com a qual mais pessoas poderão ajudar.