У кого-нибудь есть идеи, почему это не работает?
Я следовал некоторым сообщениям от @pfaffman и @Nacho_Caballero в этой теме: How to make the database (or part of it) accessible to a cloud data processor?, а также сообщению от @mpalmer здесь: Accessing to the database from outside the container - #4 by mpalmer.
Сначала я отредактировал файл app.yml следующим образом:
expose:
- "127.0.0.2:5432:5432"
Пересобрал контейнер. Внутри контейнера установил пароль для пользователя postgres и смог подключиться изнутри контейнера с помощью следующей команды:
psql -h localhost -d discourse -U postgres
Однако, когда я выхожу из контейнера и пытаюсь подключиться, получаю:
# psql -h 127.0.0.2 -p 5432 -d discourse -U postgres
psql: сервер неожиданно закрыл соединение
Скорее всего, это означает, что сервер завершился аномально
до или во время обработки запроса.
Я также пробовал менять порт на другой, но получаю ту же ошибку. IP-адрес 127 я получил из команды docker ps и раздела Network Settings (у меня запущено три отдельных экземпляра Discourse).
Если я изменю IP-адрес (на один из IP-адресов других форумов Discourse), получаю (более немедленный и) другой ответ/сообщение, так что вышеуказанное кажется частично верным:
# psql -h 127.0.0.3 -p 5432 -d discourse -U postgres
psql: не удалось подключиться к серверу: отказ в соединении
Запущен ли сервер на хосте "127.0.0.3" и принимает ли он
TCP/IP-соединения на порту 5432?
Есть ли у кого-нибудь идеи, что я делаю не так? Поиск в Google по запросу psql: server closed the connection unexpectedly указывает на проблему с сетью — значит, нужно ли что-то ещё изменить внутри контейнера?