Вы указали 0.0.0.0
в качестве IP-адреса для подключения, что не имеет смысла.0.0.0.0
- «Любой адрес».Вы, вероятно, видели сообщение, которое postgres слушал на 0.0.0.0, откуда вы и получили его.В контексте прослушивания сервера 0.0.0.0 это означает, что он прослушивает все интерфейсы ipv4.См. https://en.wikipedia.org/wiki/0.0.0.0 для получения дополнительной информации о специальном адресе 0.0.0.0 и его значении.
Если вы хотите подключиться к службе postgres, вам потребуется использовать действующий IP-адрес или DNSимя, где он работает.
В Docker, если у вас есть несколько именованных контейнеров, подключенных к одной и той же определенной пользователем сети, вы можете использовать встроенный механизм обнаружения служб, с которым поставляется Docker.
Вот модифицированный набор команд, которые нужно запустить, чтобы воспользоваться этим:
docker network create mynet
docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=password --net mynet --name database postgres
docker run --rm -p 5000:5000 --net mynet flaskapp:1
Обязательно измените код для подключения к postgres://postgres:password@database:5432
вместо postgres://postgres:password@0.0.0.0:5432