Aqui está a minha versão disso. Quase desisti, mas @tophee linkou para uma postagem que eu (!?) escrevi e que forneceu a mágica necessária! Agora, esta é uma maneira direta de configurar o Nginx Proxy Manager para o Discourse. Acho que isso torna o processo semelhante ao descrito em Run other websites on the same machine as Discourse - #396.
Instale o Nginx Proxy Manager seguindo as instruções deles em
Remova os modelos de SSL e Let’s Encrypt:
Verifique se essas linhas no seu arquivo yml estão comentadas ou excluídas:
## Descomente estas duas linhas se desejar adicionar o Lets Encrypt (https)
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"
Faça o Discourse usar a rede npm-default.
Se você seguir cegamente as instruções de instalação do Nginx Proxy Manager, ele criará uma rede Docker chamada npm_default.
Adicione este bloco aos seus arquivo(s) yml. Se você tiver contêineres web_only e data separados, precisará adicionar isso a cada um deles (eu não testei o contêiner mail-receiver). O docker_args não deve ser recuado.
docker_args: |
--network npm_default
Não há necessidade de expor nenhuma porta
Comente ou remova estas linhas do seu arquivo yml:
# expose:
# - "80:80" # http
# - "443:443" # https
Em seguida, você pode reconstruir seus contêineres e configurar o Nginx Proxy Manager assim:

Uma maneira simples (mas não necessariamente recomendada) de iniciar um segundo site do Discourse seria esta:
cd /var/discourse/containers
cp app.yml othersite.yml
# de alguma forma edite, no mínimo, o nome do host em othersite.yml
./launcher rebuild othersite
Em seguida, adicione-o ao NPM como descrito acima, usando othersite no lugar de app.
Testei isso com um app.yml mais dois contêineres do tipo web_only e um único contêiner data, além de um contêiner othersite-redis separado que é uma cópia do contêiner data contendo apenas os modelos do Redis. (Mas uma solução mais fácil seria colocar o Redis extra no contêiner web_only).