如何从另一个容器应用连接到mongoDB作为docker镜像

2exbekwf  于 2023-04-29  发布在  Docker
关注(0)|答案(4)|浏览(151)

首先我拉了mongoDb图像

sudo docker pull mongo

运行docker mongodb container:

sudo docker run --name database -d -p 27017:27017 mongo --noauth --bind_ip=0.0.0.0

我看到我的docker容器工作:

300b779a63a9        mongo               "docker-entrypoint..."   30 minutes ago      Up 30 minutes

现在我正在尝试用我的docker应用程序连接它

sudo docker run -v ~/Desktop/Template/universal_skillskill -it --link 300b779a63a9:300b779a63a9 alexa

然后...我收到一条消息,说连接被拒绝:(

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]

我检查了一下,我的应用程序可以在本地安装的mongodb下工作,但它不能与docker mongoDb容器通信:(我做错了什么?聪明的人能帮我一下吗:)

ecfsfe2w

ecfsfe2w1#

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

anauzrmj

anauzrmj2#

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

- MONGO_INITDB_ROOT_USERNAME=user
- MONGO_INITDB_ROOT_PASSWORD=password

然后使用authSource=admin参数以及只传递凭证将不起作用。
mongodb://<user>:<password>@<container_name>:27017/$<DB>?authSource=admin
我面对这个问题。我想,这也许能帮助到别人。

lkaoscv7

lkaoscv73#

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

xzv2uavs

xzv2uavs4#

您应该使用容器的IP地址(mongodb://<mongodb_container_ip>:27017/)。您可以通过运行以下命令来检查MongoDB容器的主机名:

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' m1

在本例中,m1是MongoDB容器的名称。
来源:ChatGPT

相关问题