无法访问docker容器内的mongodb



我目前正在docker中容器化我的应用程序。我有两个映像,一个用于我的节点应用程序,另一个用于mongodb。我有使用docker撰写的链接二。但每当我尝试使用27017端口访问容器内的mongodb时。但它显示为:**

看起来您正试图在本机上通过HTTP访问MongoDB驱动程序端口。

**我将mongodb配置为:

"url": "mongodb://mongoDB/astroDB"

我的docker撰写文件如下:

version: '3.0'
services:
web:
image: astrobot-node
build: .
command: "yarn start"
ports: 
- "80:3601"
depends_on:
- "mongo"
mongo:
image: mongo
ports:
- "27017:27017"

有人能告诉我到底出了什么问题吗。提前谢谢。

但是每当我尝试使用端口27017访问容器内的mongodb时。但它显示如下:**

It looks like you are trying to access MongoDB over HTTP on the native driver port.

如果你试图向MongoDB端口发送HTTP请求,这是意料之中的行为。这对我来说意味着你已经找到了网络连接,并且这部分工作正常。

接下来,您只需要使用MongoDB驱动程序从应用程序中与数据库进行对话,而不是使用curl或类似的方法。

标准的mangodb连接url应该看起来像这个

mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]https://docs.mongodb.com/manual/reference/connection-string/

在您的情况下,url字符串中的mongoDB应该指示数据库主机。要使其指向mangodb容器,您应该将其更改为"url": "mongodb://mongo/astroDB",因为您的服务名为mangodb不是mangodb

您还可以通过向容器提供静态IP并直接写入该IP来实现这一点,还可以通过使用docker container inspect <container-IP>手动测试来找到容器网络IP。

编辑

这里有一个线程可以帮助您调试问题。https://forums.docker.com/t/how-mongodb-work-in-docker-how-to-connect-with-mongodb/44763/8

最新更新