У меня есть несколько проблем с подключением к PostgreSQL из моего приложения Python. PostgreSQL находится вне контейнера, потому что это существующая база данных.
Извне контейнера база данных выглядит доступной:
$ nmap -p 5432 localhost
Starting Nmap 7.70 ( https://nmap.org ) at 2019-07-05 18:33 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE
5432/tcp open postgresql
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds
Но изнутри:
bash-4.4# nmap -p 5432 localhost
Starting Nmap 7.70 ( https://nmap.org ) at 2019-07-05 16:34 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000040s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE
5432/tcp closed postgresql
Nmap done: 1 IP address (1 host up) scanned in 0.41 seconds
Я не смог найти похожих проблем.
Возможный дубликат Как мне подключиться к локальному хосту машины из контейнера Docker?





Просто добавьте --network="host" при запуске контейнера Python:
Быстро запустите postgres-сервер:
docker run --rm -d --name postgres-server -p 5432:5432 postgres
Если я попытаюсь подключиться к нему с помощью докер-клиента, без --network="host":
docker run --rm -it --name postgres-client postgres psql -Upostgres -h localhost
psql: could not connect to server: connection refused
С --network:
docker run --rm -it --name postgres-client --network = "host" postgres psql -Upostgres -h localhost
psql (10.4 (Debian 10.4-2.pgdg90+1)
postgres=#
Ваше здоровье
Работает отлично, спасибо. Я не знал, что сеть тоже была контейнерной.
Localhost для контейнера — это сам контейнер. Postgres не работает в контейнере, поэтому вы не можете подключиться. Попробуйте подключиться с именем хоста или IP-адресом хоста докера. Более