Ошибка:
pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused, Timeout: 30s, Topology Description: <TopologyDescription id: 601833aec47f2f6e0a5ca109, topology_type: Single, servers: [<ServerDescription ('localhost', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('localhost:27017: [Errno 111] Connection refused')>]>
Я создал образ с докером с портом 27018. Как это:
docker run --name test -e MONGODB_DATABASE=ms-content-test -e MONGODB_USER=ms-content-test -e MONGODB_PASS=ms-content-test **-p 27018:27017** -d mongo
В моем файле config.py для тестов я создал соединение следующим образом:
class TestingConfig:
TESTING = True
DEBUG = True
# Database Test
DB = os.environ.get('DB', 'ms-content-test')
USERNAME = os.environ.get('USERNAME', 'ms-content-test')
PASSWORD = os.environ.get('PASSWORD', 'ms-content-test')
HOST = os.environ.get('HOST', 'localhost')
PORT = int(os.environ.get('PORT', 27018))
MONGO_URI = 'mongodb://{username}:{password}@{host}:{port}/{database}'.format(
username=USERNAME,
password=PASSWORD,
host=HOST,
port=PORT,
database=DB
)
Теперь, когда я пытаюсь протестировать приложение, порт 27018 не работает. Порт 27017 работает нормально. В MONGO_URI я уже пытался передать некоторые аргументы, такие как authSource="admin"
или использовать переменные pymongo для подключения, но ничего не работает.
Внутренне похоже на то, что Mongodb всегда заставляет использовать порт 27017. Это библиотека mongoengine: https://github.com/MongoEngine/mongoengine/blob/master/mongoengine/connection.py