如何从另一个容器应用程序作为docker映像连接到mongodb

Ann*_*a K 5 mongodb docker

首先我拉了mongoDb图像

sudo docker pull mongo
Run Code Online (Sandbox Code Playgroud)

并运行docker mongodb容器:

sudo docker run --name database -d -p 27017:27017 mongo --noauth --bind_ip=0.0.0.0
Run Code Online (Sandbox Code Playgroud)

我看到我的Docker容器可以工作了:

300b779a63a9        mongo               "docker-entrypoint..."   30 minutes ago      Up 30 minutes  
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试通过我的docker app连接到它

sudo docker run -v ~/Desktop/Template/universal_skillskill -it --link 300b779a63a9:300b779a63a9 alexa
Run Code Online (Sandbox Code Playgroud)

和...我收到一条消息,拒绝连接:(

Uncaught exception: MongoError: failed to connect to server [0.0.0:27017] on first connect [MongoError: connect ECONNREFUSED 0.0.0.0:27017]
MongoError: failed to connect to server [0.0.0:27017] on first connect [MongoError: connect ECONNREFUSED 0.0.0.0:27017]
Run Code Online (Sandbox Code Playgroud)

我检查了一下,我的应用程序可以在本地安装的mongodb上使用,但是它无法与docker mongoDb容器通信:(我在做什么错?有人可以请我帮忙吗:)

小智 7

如果您使用这些附加参数启动容器进行身份验证,请添加到以前的答案

- MONGO_INITDB_ROOT_USERNAME=user
- MONGO_INITDB_ROOT_PASSWORD=password
Run Code Online (Sandbox Code Playgroud)

然后也使用authSource=admin参数,仅传递凭据是行不通的。

mongodb://<user>:<password>@<container_name>:27017/$<DB>?authSource=admin

我遇到了这个问题。我想,这可能对某人有帮助。


Kil*_*ian 5

尝试使用容器的名称database而不是 IP 进行连接。


yam*_*enk 5

您需要连接到,300b779a63a9:27017因为这是您为mongodb指定的链接名称。

  • 像这样在我的容器webapp mongoose.connect('mongodb://:300b779a63a9:27017'); (2认同)