Postgres Docker – Wie aktiviere ich Postgres Docker, um Remoteverbindungen zuzulassen?

Postgres Docker – Wie aktiviere ich Postgres Docker, um Remoteverbindungen zuzulassen?

Ich hoffe, meinen Postgres-Docker-Dienst vom Remote-Client aus verbinden zu können. So erstelle ich den Container:

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='*'"

Ich habe recherchiert und jemand sagte, die Datei pg_hba.confmüsse bearbeitet werden. Wie soll ich pg_hba.conf bearbeiten? Es gibt keine Konfigurationsparameter zum Einrichten pg_hba.conf. Gibt es außerdem Unterschiede zwischen host all all all md5und host all all 0.0.0.0/0 md5? Welches soll ich verwenden und wie soll ich es in pg_hba.confden Docker-Container einfügen?

Hier ist die Ausgabe, netstatnachdem ich den Container erstellt habe:

$ 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

Bedeutet das, dass der PostgreSQL-Dienst nur auf IPv6 hört?

Antwort1

Es gibt Fehler in -v option:

  • Du schreibst, /var/lib/postgres/dataes sollte sein/var/lib/postgresql/data
  • Der Hostpfad muss vollständig sein:/root/pgdata
  • Wenn der Host Selinux verwendet, verwenden Sie -v /root/pgdata:/var/lib/postgresql/data:Z, andernfalls verwenden Sie :rwstattdessen

Das hier läuft einwandfrei:

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                    :::*

Testen Sie den lokalen Host:

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

mydb=# \q

Test von einer anderen Maschine:

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

mydb=#

Und wenn Sie es bearbeiten möchten, pg_hba.confbefindet es sich im /root/pgdataVerzeichnis. Ich dachte, Sie würden es aber nicht brauchen.

Prost :)

verwandte Informationen