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

I have mongo db in a docker container and I want to connect my app which is running on another container

我使用 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: <TopologyDescription id: 605cb104a9a518d390b9ba99, topology_type: Single, servers: [<ServerDescription ('mongo', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('mongo:27017: [Errno -2] Name or service not known',)>]>"

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

可能的解决方案:

  • 使用 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
  • 来检索网络名称