Мой способ, поскольку я предпочитаю простоту, — это метод «один контейнер на веб-сайт», где каждый контейнер использует шаблон web.socketed.template.yml, чтобы каждое приложение (контейнер) работало через обратный прокси Nginx.
Примерно так:
Или же вы можете сначала создать все контейнеры, а затем выполнить всю часть с nginx и SSL (Let’s Encrypt), если вам повезёт.
Этот подход потребует больше места на диске и памяти, но у вас будет преимущество: каждый веб-сайт будет работать в своём изолированном контейнере.
Я не думаю, что этот метод «официально поддерживается», но, на мой взгляд, его достаточно легко настроить и поддерживать самостоятельно. Настройка контейнера с сокетом проста, так как у вас есть «официальный» шаблон Discourse для этого; а настройка обратного прокси Nginx для Unix-доменного сокета также хорошо документирована в сети (и есть примеры для Discourse).