Контейнер PostgreSQL находится в статусе «Restarting» или «Exited»
Вопрос:
После запуска стенда контейнер postgresql перешел в статус «Restarting» или «Exited» и не запускается.
Как устранить данную проблему?
Ответ:
Для решения проблемы, проверьте логи контейнера postgresql. Сделать это можно с помощью следующей команды: (ключ --head N используется для ограничения вывода логов первыми N строками)
sudo docker logs postgresql --head 50
Типовые ошибки в логах postgresql и способ их решения:
- Ошибка «psql: error: connection to server on socket «/var/run/postgresql/.s.PGSQL.5432» failed: FATAL: role «postgres» does not exist»
Данная ошибка означает, что в системе не прошла аутентификация к контейнеру postgresql. Происходит попытка подключения к postgresql от имени пользователяpostgres, но такой роли в СУБД нет.
Для решения проблемы, проверьте параметрыPOSTGRES_BS_BACKEND_USERиPOSTGRES_BS_BACKEND_PASSWORDв файле.env. Значение данных параметров должно совпадать с именем роли в базе данных.
Рекомендуется использовать стандартные значения для данных параметров:POSTGRES_BS_BACKEND_USER="postgres"
POSTGRES_BS_BACKEND_PASSWORD="postgres"
- Ошибка «psql: error: connection to server at «127.0.0.1», port 5432 failed:Connection refused…»
Данная ошибка означает, что системе не удается подключиться к контейнеру postgresql по указанному адресу и порту.
Проверьте доступность указанного порта командой:ss -tuln | grep :<порт>
Рекомендуется использовать стандартный внутренний порт PostgreSQL:
5432 - Ошибка «…FATAL: database «db_name» does not exist»
Данная ошибка означает, что происходит попытка подключения к базе данных <db_name>, но такой базы не существует.
Убедитесь, что база данных существует и её имя совпадает с параметромDbв файлеappsettings.json(см. Настройка файла appsettings.json).
Для этого:
1. подключитесь к PostgreSQL командойpsql -U <user>
2. проверьте список баз данных командой\l
Пример выполнения представленных выше команд:root@6b6e8b36ff53:/# psql -U postgres psql (16.9 (Debian 16.9-1.pgdg110+1)) Type "help" for help. postgres=# \l /postgres postgres | postgres | UTF8 | libc | en_US.utf8 | en_US.utf8 | | | template0 | postgres | UTF8 | libc | en_US.utf8 | en_US.utf8 | | | =c/postgres +
Если базы данных нет в списке, то её нужно развернуть в соответствие с инструкцией Развертывание базы данных.
Если в логах контейнера postgresql нет ошибок, то проверьте на наличие ошибок логи контейнера bs-backend и предпримите меры по их решению. При необходимости можно обратиться на support@businessstudio.ru за помощью, указав, что проверка по текущей статье проведена, но проблему не получилось решить самостоятельно, и приложив собранные логи.