Docker Postgres отказано в соединении - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь запустить докер-контейнер, содержащий postgres, и получить доступ к его локальному узлу в моем приложении. Тем не менее, я получаю эту ошибку:

UserRDD$ docker run -i --rm -e PGPASSWORD=12qw --network=host postgres:10.9 psql -h localhost -p 5433 -U postgres -d postgres -f -

psql: could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5433?
could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5433?

Этот код, похоже, работает для кого-то еще. Не уверен, что мне не хватает.

Подскажите, пожалуйста, что мне не хватает. Последние три часа пытался бороться с этим.

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

Причина: Postgres БД не работает, поскольку вы переопределяете значение по умолчанию CMD, которое просто запускает клиент Postgres (psql), а не сервер БД. для сервера БД аргумент должен быть postgres.

docker run -i --rm -e PGPASSWORD=12qw --network=host postgres:10.9 postgres

Поскольку ваша команда не запускает сервер Postgres, но есть только клиент Postgres, который пытается соединиться с localhost контейнера, а сервер Postgres неБег. это будет иметь смысл, например

docker run -i --rm  postgres:10.9 psql -h remote-server -p 5432 -U postgres -d postgres

Для запуска сервера Postgres вам нужно только

docker run  -e POSTGRES_PASSWORD=12qw  -e POSTGRES_DB=test -p 5432:5432 -d postgres:10.9

, а затем подключиться к БД после того, как БД будет запущена.

Еще одна важная вещь - любой аргументпереданная команде run будет рассматриваться как аргумент серверу postgres, например

docker run -i --rm  postgres:10.9  --version
0 голосов
/ 05 ноября 2019

Используйте следующую команду с сопоставлением портов, чтобы открыть контейнерный порт для localhost -p <host_port>:<container_port>

docker run  -e POSTGRES_PASSWORD=12qw  -e POSTGRES_DB=stack -p 1111:5432 -d postgres

После этого вы можете получить доступ к этому экземпляру postgres на localhost:1111 порт

psql -h localhost -p 1111 -U postgres -d stack
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...