我目前正在将应用程序容器化到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"
谁能告诉我实际上是什么问题。提前致谢。
答案 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
或类似名称访问它。