【发布时间】:2017-03-03 04:34:55
【问题描述】:
我可以在我的网络应用程序中连接到本地 Postgres 数据库,但如果我在 Docker 容器内运行网络应用程序,不能。
- 在 Docker 容器内运行的 Web 应用
- 在主机中运行的 Postgres
我不确定它是否与 Postgres 连接设置或 Docker 网络设置有关。
按照我的设置和命令:
主持人:
- OSX 10.11.6
- PostgreSQL 9.6
Docker 容器
- Docker 1.13.1
- Docker 机器 0.9.0
- Docker 容器操作系统:python:3.6.0-alpine
- Python 3.6 + psycopg2==2.7
postgresql.conf:
listen_addresses = '*'
pg_hba.conf
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 trust
host all all 172.17.0.0/24 trust
host all all 192.168.99.0/24 trust
Docker 网络处于 HOST 模式
docker run -i --net=host -h 127.0.0.1 -e POSTGRES_URI=postgresql://127.0.0.1:5432/db my/image
错误:
无法连接到服务器:连接被拒绝
服务器是否正在运行 在主机“127.0.0.1”上并接受端口 5432 上的 TCP/IP 连接?
在 BRIDGE 模式下使用 Docker 网络
docker run -i --add-host=dockerhost:`docker-machine ip ${DOCKER_MACHINE}` -e POSTGRES_URI=postgresql://dockerhost:5432/db -p 8000:8000 -p 5432:5432 my/image
错误:
服务器意外关闭连接
这大概意味着 服务器在处理请求之前或期间异常终止。
有什么想法吗?
【问题讨论】:
-
没有在容器中运行 postgres 的任何特殊原因?
标签: python postgresql docker