Для моей компании необходимо разработать некоторые функции, используя REST API нашего экземпляра Discourse. Для локальной разработки и тестирования я уже довольно долгое время успешно следую инструкции по адресу Install Discourse for development using Docker.
Прошло несколько недель с тех пор, как я последний раз занимался разработкой. Вчера я хотел снова запустить Discourse локально и выполнил привычную команду git pull && d/boot_dev && d/bundle install && d/rails s. Однако последняя команда d/rails s завершается ошибкой:
URGENT: Failed to initialize site default: ActiveRecord::ConnectionNotEstablished connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
Is the server running locally and accepting connections on that socket?
/home/discourse/.bundle/gems/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:69:in `rescue in new_client'
[...]
Когда я открываю терминал внутри контейнера discourse_dev и выполняю ls -la /var/run/postgresql/, я вижу, что файла сокета .s.PGSQL.5432 здесь действительно нет.
Хорошо, я подумал, что, возможно, не стоит было слепо выполнять git pull в первую очередь, поэтому я переключился на тег v4.4.0 и даже на тег v3.3.0 и попытался снова. Но я получаю точно такую же ошибку.
Мне кажется, что база данных Postgres не запущена внутри контейнера discourse_dev?
Странно то, что если я клонирую репозиторий discourse в новую папку (даже с последним кодом из ветки main) и запущу Discourse с помощью Docker, этой ошибки не возникает, и Discourse успешно запускается.
Но, разумеется, в этом случае база данных пустая, что немного неудобно. Я понимаю, что данные сохраняются внутри tmp/postgres, и их можно скопировать из старой папки в новую. Но сделать это уже невозможно, так как я не знал об этом вчера, и в своих вчерашних попытках устранения неполадок я удалил все временные папки, а также папки node_modules и .pnpm-store и так далее. Однако проблема сохраняется.
Есть ли у кого-нибудь идея, что здесь происходит, или что я могу сделать для устранения неполадок?