docker соединение pgAdmin4 отклонено при подключении локальной postgres базы данных - PullRequest
9 голосов
/ 18 июня 2020

Я пытаюсь подключить свою локальную базу данных postgres с помощью контейнера pgAdmin4 docker. Когда я открываю http://localhost:5050/ и вхожу в систему после создания нового подключения к серверу, я получаю сообщение об ошибке Unable to connect to server: could not connect to server: Connection refused.

Вот мой docker-compose.yml файл

version: '3.5'

services:
  pgadmin:
    container_name: pgadmin4
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: db@db.com
      PGADMIN_DEFAULT_PASSWORD: odoo
    volumes:
       - pgadmin:/root/.pgadmin
    ports:
      - "5050:80"
    restart: unless-stopped

volumes:
    pgadmin:

enter image description here

I am finding solution to connect my local postgres databasw with pgadmin4 docker container. I am using Ubuntu 20.04 os system.

---- Updated base on @Veikko answer -----------

Here is my docker-compose file code https://pastebin.com/VmhZwtaL

а здесь postgresql .conf файл https://pastebin.com/R7ifFrGR

и pg_hba.conf файл https://pastebin.com/yC2zCfBG

Ответы [ 5 ]

2 голосов
/ 18 июня 2020

Вы можете получить доступ к своей главной машине из контейнера docker с именем DNS host.docker.internal. Замените localhost в соединении с вашим сервером на это имя. Имя localhost внутри вашего pgAdmin относится к самому контейнеру docker, а не к вашему хост-компьютеру.

1 голос
/ 25 июня 2020

Вы можете использовать изображение qoomon/docker-host для доступа к службам на вашем главном компьютере. Добавьте службу docker -host в свой docker -compose следующим образом:

version: '3.5'

services:
  docker-host:
      image: qoomon/docker-host
      cap_add: [ 'NET_ADMIN', 'NET_RAW' ]
      restart: on-failure
  pgadmin:
    container_name: pgadmin4
    image: dpage/pgadmin4
    environment:
...

После этого вы сможете получить доступ к службе Postgres вашего хоста с именем хоста docker -host. Замените localhost на docker-host в строке подключения, и соединение должно работать.

Если после этого возникнут проблемы с подключением, убедитесь, что у вас нет брандмауэра, блокирующего трафик c, у вас есть соответствующий Docker настройка сети (см. Документацию), и ваш postgresql прослушивает этот адрес.

Ubuntu / linux версия Docker в настоящее время не поддерживает хост. docker. Внутреннее DNS-имя, которое будет указывать контейнеры на хост. Это самый простой способ установить ссылку на хост в Docker для Ma c или Windows. Я надеюсь, что мы скоро получим это и на Linux.

Более подробную информацию о docker -host можно найти в репозитории Github: https://github.com/qoomon/docker-host

0 голосов
/ 29 июня 2020

вы можете попробовать добавить к своему pg_hba.conf

host    all             all             0.0.0.0/0            trust

или

host    all             all             0.0.0.0/0            md5

для проверки.

Затем, если это сработает, вы должны изменить 0.0.0.0/0 сетевая маска к вашей docker яркой сетевой маске. И проверьте это еще раз. Кстати. для подключения к вашему локальному хосту (на хосте) вам нужно подключиться к docker яркому ip для меня это 172.17.0.1/32.

EDIT: Second: postgresql.conf

раскомментируйте и прочтите, что там написано:

listen_addresses = '*'     # what IP address(es) to listen on;
                    # comma-separated list of addresses;
                    # defaults to 'localhost'; use '*' for all
                    # (change requires restart)

вам нужно привязать к своим IP-адресам, к которым можно подключиться с docker, поэтому в моем случае это должно быть 172.17.0.1

0 голосов
/ 28 июня 2020

Создайте server с именем / адресом хоста 172.17.0.1 и убедитесь, что PostgreSQL прослушивает (*).

install_pgadmin4_using_ docker

вывод

0 голосов
/ 26 июня 2020

Сначала вызовите это: sudo netstat -nplt, чтобы убедиться, что кто-то прослушивает порт 5432.
Затем позвоните sudo ip addr, чтобы узнать IP-адрес вашего хост-компьютера.
Затем попробуйте подключиться с использованием реального IP вместо localhost .
Я вижу в вашем ip addr выводе:

3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 30:10:b3:e4:39:e2 brd ff:ff:ff:ff:ff:ff inet 192.168.43.190/24 brd 192.168.43.255 scope global dynamic noprefixroute wlp3s0

Итак, ваш реальный IP-адрес 192.168.43.190

...