如何为本地和docker应用程序定义相同的MongoClient?

时间:2019-01-30 14:37:56

标签: python mongodb docker pymongo

为了从Flask与MongoDB通信,我使用以下代码定义连接:

CLIENT = pymongo.MongoClient('mongodb://localhost:27017/')

一切正常,但是一旦我尝试在Docker上部署应用程序,就会收到以下错误消息:

pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused

要解决此问题,我可以将以前的代码替换为:

import os
client = MongoClient(os.environ['DB_PORT_27017_TCP_ADDR'],27017)

但是它仅适用于Docker,不适用于我的本地计算机。 如何定义连接以使其在Docker和本地计算机上均可工作?

1 个答案:

答案 0 :(得分:0)

您可以指定是否存在DB_PORT_27017_TCP_ADDR环境变量,请使用该变量。否则,请使用localhost,例如:

import os
client = MongoClient(os.environ.get('DB_PORT_27017_TCP_ADDR') or 'localhost', 27017)