Как определить один и тот же MongoClient для локального и докерского приложения? - PullRequest
0 голосов
/ 30 января 2019

Для связи с MongoDB из Flask я использую следующий код для определения соединения:

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 голосов
/ 30 января 2019

Вы можете указать, что если присутствует DB_PORT_27017_TCP_ADDR переменная окружения, используйте это;еще используйте localhost используя что-то вроде этого:

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