背景
已通过 docker 启动 mongodb,监听端口为 27017. 直接启动应用(不通过 docker)可以正常访问到 mongodb,但是通过 docker 访问却不行,访问的 url 为: mongodb://127.0.0.1:27017 或
2019-04-18 06:05:52.694 [cluster-ClusterId{value='5cb813be26261e30fc3db87f', description='null'}-127.0.0.1:27017] DEBUG org.mongodb.driver.cluster - Updating cluster description to {type=UNKNOWN, servers=[{address=127.0.0.1:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Connection refused}}]
1
原因分析
docker 是一个虚拟环境,127.0.0.1 和 localhost 指的是虚拟环境内部,而不是外部宿主机,所以无法这样访问.
解决方案
对于 mac 和 windows,可以使用 host.docker.internal 替换 127.0.0.1,如
对于 Linux 可以采用如下方案(后续应该也可以用上面的方案,但是当前 docker 还没有修改此问题):
创建一个桥接网络
下面的 localNet 是网络名字,可自行修改;关于 192.168.0.0 这个子网,也可以自行定义.
默认按照下面的命令,执行后将可以通过 192.168.0.1 访问宿主机.
docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 localNet
使用 192.168.0.1 替换 127.0.0.1,如
原文链接:https://blog.csdn.net/yinxing2008/article/details/89380761
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于