我在 docker 容器中有 mongo db,我想连接在另一个容器上运行的应用程序

Posted

技术标签:

【中文标题】我在 docker 容器中有 mongo db,我想连接在另一个容器上运行的应用程序【英文标题】:I have mongo db in a docker container and I want to connect my app which is running on another container 【发布时间】:2021-06-22 11:15:54 【问题描述】:

我使用flask_mongoengine 连接到数据库 如下:

app.config['MONGODB_SETTINGS'] = 
'host': 'mongodb://mongo:27017/db_name'
    

mongo 是容器的名称,但我收到以下错误:

"pymongo.errors.ServerSelectionTimeoutError: mongo:27017: [Errno -2] Name or service not known, Timeout: 30s, Topology Description: ]>"

【问题讨论】:

分享你的命令来运行 docker 容器。为了解决你的问题,我应该模拟你的环境。 如何运行容器? docker-compose? Dockerfile?两个都?分享给我们。 【参考方案1】:

这两个容器不在同一个网络上。

可能的解决方案:

使用docker-compose,以便默认情况下它们在同一网络中运行 使用docker run --network host mongo 来使用host network。注意:不适用于 Docker Desktop for Win 或 Mac 手动将同一网络附加到两个容器。启动 mongo 和烧瓶应用程序后,docker network connect network-name flask-container-name。您可以通过检查 mongo 容器或docker network list 来检索网络名称

【讨论】:

以上是关于我在 docker 容器中有 mongo db,我想连接在另一个容器上运行的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在现有 Docker 容器中创建现有 Mongo DB 数据库的连接

在 Docker 容器中安装 mongo 客户端

创建 Mongo docker 镜像并将用户添加到数据库

从 WiredTiger 文件恢复损坏的 mongo db

docker常用命令之mongodb启动带上现有的数据文件

docker常用命令之mongodb启动带上现有的数据文件