Postgres Docker — как включить postgres docker для разрешения удаленных подключений?

Postgres Docker — как включить postgres docker для разрешения удаленных подключений?

Я надеюсь подключить свой Postgres docker service из удаленного клиента. Вот как я создаю контейнер:

sudo docker run --name pg -p 5432:5432 -v pg_data:/var/lib/postgres/data -e POSTGRES_DB=mydb -e POSTGRES_USER=dbowner -e POSTGRES_PASSWORD=MySecretPassword -d postgres -c "listen_addresses='*'"

Я провожу исследование, и кто-то сказал, что файл pg_hba.confнужно редактировать. Как мне редактировать pg_hba.conf? Нет параметров конфигурации для настройки pg_hba.conf. Также, есть ли какие-либо различия между host all all all md5и host all all 0.0.0.0/0 md5? Какой из них мне следует использовать и как его следует поместить pg_hba.confв контейнер docker?

Вот вывод netstatпосле создания контейнера:

$ netstat -ntl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 :::5432                 :::*                    LISTEN     
tcp6       0      0 :::3000                 :::*                    LISTEN     
tcp6       0      0 :::4000                 :::*                    LISTEN     
tcp6       0      0 :::4001                 :::*                    LISTEN     
tcp6       0      0 :::6379                 :::*                    LISTEN

Означает ли это, что служба PostgreSQL слушает только IPv6?

решение1

Есть ошибки в -v option:

  • Вы пишете, /var/lib/postgres/dataчто это должно быть/var/lib/postgresql/data
  • Путь к хосту должен быть полным:/root/pgdata
  • Если хост использует selinux, то используйте -v /root/pgdata:/var/lib/postgresql/data:Z, а если нет, то используйте :rwвместо этого

Все работает отлично:

root@testubt:~# docker run --name pg -p 5432:5432 -v /root/pgdata:/var/lib/postgresql/data:Z -e POSTGRES_DB=mydb -e POSTGRES_USER=dbowner -e POSTGRES_PASSWORD=MySecretPassword -d postgres:alpine


root@testubt:~# ss -tnl | grep 5432
LISTEN     0      128         :::5432                    :::*

Тестовый локальный хост:

root@testubt:~# PGPASSWORD=MySecretPassword psql -U dbowner mydb -h localhost
psql (9.5.14, server 10.5)
Type "help" for help.

mydb=# \q

Тест с другой машины:

alp01:~# PGPASSWORD=MySecretPassword psql -U dbowner mydb -h testubt
psql (10.5)
Type "help" for help.

mydb=#

И если вы хотите отредактировать pg_hba.confего, он находится в /root/pgdataкаталоге. Я полагал, что вам это не понадобится.

Ваше здоровье :)

Связанный контент