The way I do this, since I like simple, is the "one container per web site method with each container using a web.socketed.template.yml template so each app (container) works with the nginx reverse proxy.
Something like this, roughly:
Or, you can create all your containers first and do the entire nginx ssl (LetsEncrypt) part last, if you are feeling lucky.
This approach will take more disk space and memory but you will have the advantage of each web site running in it’s on isolated container.
I don’t think this method is “officially supported” but it’s easy enough to configure and support yourself, in my opinion. Setting up the socketed container is easy because you have an “official” Discourse template for this; and setting up the nginx reverse proxy to a unix domain socket is also well documented on the net (and there are some Discourse examples as well).