У кого-нибудь есть опыт запуска двух отдельных контейнеров Docker вместо метода secondsite?

Погодите. Вы клонировали Discourse дважды? Нужно клонировать Discourse один раз, а затем создать несколько файлов YML в директории containers.

Возможно, стоит посмотреть Use Nginx Proxy Manager to manage multiple sites with Discourse, хотя я использовал jwilder/nginx-proxy - Docker Image. Вам просто нужно добавить несколько переменных ENV в ваш YML, чтобы настроить соединение, но всё равно придётся разобраться с множеством вещей, чтобы это работало.

У каждого сайта своё имя хоста. В этом и смысл всей этой затеи, верно?

Я настроил обратный прокси для общения с портом 80 в контейнере. Другие предпочитают использовать сокеты. Не следует открывать никакие порты.

Нет. Ни один из этих файлов не может быть общим.

Каждому сайту нужна своя база данных postgres (может находиться на том же сервере postgres, если вы знаете, как это сделать).

Каждому сайту нужен свой redis. Они не могут делить redis, что является одним из преимуществ настройки мультисайта.

Если вы хотите запустить два экземпляра postgres, просто измените имя хоста, настройки SMTP и пути к томам, а также удалите или закомментируйте шаблоны ssl и letsencrypt. Вы даже можете использовать discourse-setup, если переименуете app.yml, например, в hostname.yml, перед повторным запуском ./discourse-setup.