2016-08-10 2 views
0

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

psql: could not connect to server: Connection refused 
Is the server running on host "172.18.0.2" and accepting 
TCP/IP connections on port 5432? 

В моем Докере-Compose файл, я монтаж pg_hba.conf. Это мой докер-Compose файл:

services: 
    db: 
     networks: 
     - test 
     image: postgres:9.5.3 
     expose: 
     - 5432 
     volumes: 
     - ./pgdata/:/var/lib/postgresql/data 
     - ./pg_hba.conf/:/var/lib/postgresql/data/pg_hba.conf 

Я изменил мой файл pg_hba.conf принимать удаленные соединения со всех хостов на основе инструкций here. Мой pg_hba.conf выглядит следующим образом:

# TYPE DATABASE  USER   ADDRESS     METHOD 

# "local" is for Unix domain socket connections only 
local all    all          trust 
# IPv4 local connections: 
host all    all    0.0.0.0/0    trust 
# IPv6 local connections: 
host all    all    ::0/0     trust 
# Allow replication connections from localhost, by a user with the 
# replication privilege. 
#local replication  postgres        trust 
#host replication  postgres  127.0.0.1/32   trust 
#host replication  postgres  ::1/128     trust 

host all all 0.0.0.0/0 md5 

И мой postgresql.conf имеет следующую строку тоже: listen_addresses = '*'

Когда я пытаюсь подключиться к базе данных от хоста я бег контейнера на это успешно соединяется. Но когда я пытаюсь подключиться с любой удаленной машины, используя команду psql -h 172.18.0.2 -U postgres -d postgres -p 5432, она дает мне ошибку подключения, которая означает, что удаленные подключения не работают. Со всеми этими настройками я бы ожидал, что он подключится. Что мне здесь не хватает?

+0

"172.18.0.2" Является ли 172.0.0.0/8 мостик/проложено/файрвол? IIRC есть что-то особенное о 172. сетях. – wildplasser

ответ

5

Не похоже, что вы фактически публикуете открытый порт.

вместо:

expose: 
    - 5432 

использование:

ports: 
- "5432:5432" 

expose документов:

Expose ports without publishing them to the host machine - they’ll only be accessible to linked services. Only the internal port can be specified.

 Смежные вопросы

  • Нет связанных вопросов^_^