Проблема с докерскими контейнерами postgresql и pgadmin - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь соединить postgresql и pgadmin4 вместе. pgadmin4 работает нормально, но когда я пытаюсь создать новый сервер, у меня возникают 2 проблемы:

  • , если контейнер postgres находится на другом порту, отличном от 5432, он не распознает этот порт. Это показывает эту ошибку: could not connect to server: Connection refused Is the server running on host "172.17.0.5" and accepting TCP/IP connections on port 5431?
  • , если контейнер postgres находится на порту 5432, ошибка будет FATAL: password authentication failed for user "example".

Я выполняю эту команду, чтобы получить postgres контейнер: docker run -p 5431:5432 --name postgres2 -e POSTGRES_PASSWORD=ad1234 -d postgres.

Я пытаюсь, следуя другим ответам в stackoverflow, добавить эту команду -c"listen_addresses='*'", и я тоже вхожу в файл конфигурации, но ничего из этого не работает для меня.

Надеюсь, вы сможете мне помочь, спасибо.

РЕДАКТИРОВАТЬ [решено]

Хорошо, я решил, это был большой провал с моей стороны. Я использовал 172.17.0.5 (адрес контейнера IP), и для подключения мне нужно было 172.17.01 (шлюз). Спасибо за ваше время.

1 Ответ

0 голосов
/ 01 мая 2019

Я воспроизвел ваш сценарий так:

# docker run -p 5431:5432 --name postgres2 -e POSTGRES_PASSWORD=ad1234 -d postgres
# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
d4030c577a24        postgres            "docker-entrypoint.s…"   2 minutes ago      Up 2 minutes       0.0.0.0:5431->5432/tcp   postgres2

# sudo -u postgres psql -h localhost -p 5431
could not change directory to "/root": Permission denied
Password: 
psql (10.5, server 11.2 (Debian 11.2-1.pgdg90+1))
WARNING: psql major version 10, server major version 11.
         Some psql features might not work.
Type "help" for help.

postgres=# CREATE DATABASE mytestdb;
CREATE DATABASE
postgres=# \q

Теперь запускаем docker для pgadmin и возможность подключения к postgresql:

docker run -p 80:80 --link postgres2 -e "PGADMIN_DEFAULT_EMAIL=user@domain.com" -e "PGADMIN_DEFAULT_PASSWORD=SuperSecret" -d dpage/pgadmin4

С помощью приведенной выше команды вы можете связать докер postgres2 с докером pgadmin, а затем при создании соединения на pgadmin4 вы должны использовать:

  • имя хоста / адрес: postgres2
  • порт: 5432
  • База данных обслуживания: postgres
  • имя пользователя: postgres

с этим я подключился к Postgres из pgadmin4

Насколько я знаю, по умолчанию Docker PostgreSQL поставляется с подключением только по локальной сети, и если вы хотите добавить удаленное подключение, вы должны добавить "listen_addresses = '*'" в postgresql.conf

...