Как подключиться к базе данных

Discourse обычно работает внутри виртуальной машины (Ubuntu) в контейнере (Docker в промышленной среде и Vagrant в среде разработки).
По этой причине Вы не можете получить доступ к серверу базы данных форума обычным простым путём: ведь сервер баз данных работает внутри виртуальной машины, а Ваша операционная система ничего не знает о программах внутри виртуальной машины.

Общение с программами внутри виртуальной машины реализуется через порты.
Вам нужно открыть туннель SSH: привязать порт Вашего компьютера к порту виртуальной машины.

Discourse использует в качестве сервера баз данных PostgreSQL, который слушает порт 5432.
Таким образом, Вам надо привязать какой-нибудь порт к порту 5432 виртуальной мащины.

Если Discourse работает внутри Docker, то привязка портов делается в секции «expose» файла YML контейнера:

expose:
  <standard definitions>
  - "15432:5432" # PostgreSQL

Если Discourse работает внутри Vagrant, то привязка портов делается посредством консоли:

vagrant ssh -- -L 15432:localhost:5432

Далее, установите какую-нибудь программу-клиент для работы с PostgreSQL.
Я рекомендую phpPgAdmin для доступа к промышленному серверу Discourse, потому что эта программа работает в браузере (аналогично MySQL) и, работая на том же сервере, что и Discourse, не требует открытия порта базы данныъ наружу в интернет.

Для локальной разработки (среды Vagrant) я пользуюсь pgAdmin: это обычная программа для Windows.

В среде Vagrant системное имя пользователя PostgreSQL — «discourse», пароля нет.
В среде Docker системное имя пользователя Docker — «postgres», пароля тоже нет, но Вам надо его задать, потому что иначе phpPgAdmin не даст авторизоваться, да и по соображениям безопасности.
Задать пароль можно так:

./launcher enter app
su - postgres
psql -d postgres -c "ALTER ROLE postgres WITH PASSWORD '<пароль>';"

Интерфейс phpPgAdmin:

Интерфейс pgAdmin:

Посмотрел у себя app.yml - там нашел только вот такое:

templates:

  • “templates/postgres.template.yml”

В секции expose у меня только такая запись:

  • “4579:80” # http
    Мне чтобы подключиться к базе нужно прописать в секции expose:
  • “15432:5432” # PostgreSQL

И затем выполнить как Вы указали выше это:
./launcher enter app
su - postgres
psql -d postgres -c “ALTER ROLE postgres WITH PASSWORD ‘<пароль>’;”

Я правильно понимаю или нужно что то делать в этом файле

  • “templates/postgres.template.yml” ?

Заранее благодарен за ответ.

Могу настроить подключение к базе данных Discourse через phpPgAdmin или pgAdmin за $100, работа займёт 1 час.

Спасибо конечно:) Я хочу разобраться сам как все устроено в движке. Установить же я его смог в докере:) Думаю и с базой данных разберусь со временем.