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