无法访问docker容器内的mongodb

时间:2020-04-25 10:04:08

标签: node.js mongodb docker docker-compose

我目前正在将应用程序容器化到docker中。我有两个图像,一个用于我的节点应用程序,另一个用于mongodb。我有两个使用docker-compose的链接。但是每当我尝试使用端口27017访问容器内的mongodb时。 但它显示如下: **

您似乎正在尝试通过本机上的HTTP访问MongoDB 驱动程序端口。

** 我的mongodb配置为:

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

我的docker-compose文件为:

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

谁能告诉我实际上是什么问题。提前致谢。

2 个答案:

答案 0 :(得分:1)

标准的mangodb连接网址应如下所示

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

如果您的URL字符串中的 mongoDB 应该指示数据库主机,要使其指向mangodb容器,应将其更改为"url": "mongodb://mongo/astroDB",使服务名为 man 而不是 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

答案 1 :(得分:0)

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

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

如果您尝试将HTTP请求发送到MongoDB端口,则这是预期的行为。这对我说的是您已弄清网络连接,并且该部分正常工作。

接下来,您只需要使用MongoDB驱动程序来从应用程序与数据库进行通讯,而不用curl或类似名称访问它。

相关问题