我可以在我的网络应用中连接到我的本地Postgres数据库,但如果我在Docker容器内运行网络应用程序,则不。
我不确定它是否与Postgres连接设置或Docker网络设置有关。
按照我的设置和命令:
主机:
Docker容器
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 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连接?
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
错误:
服务器意外关闭连接
这可能意味着 服务器在处理请求之前或处理时异常终止。
有什么想法吗?
答案 0 :(得分:1)
有一条关于在docs
中执行此操作的说明我想从容器连接到主机上的服务
Mac有不断变化的IP地址(如果没有网络访问权限,则为无)。我们目前的建议是将未使用的IP附加到Mac上的
lo0
界面;例如:sudo ifconfig lo0 alias 10.200.10.1/24
,并确保您的服务正在侦听此地址或0.0.0.0
(即不是127.0.0.1
)。然后容器可以连接到这个地址。