0

错误是:

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')>]>

我使用 docker 创建了一个带有端口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

4

1 回答 1

0

你的docker run命令不正确。参数的格式-p-p CONTAINER_PORT:HOST_PORT.

您的-p 27018:27017论点是将所有请求从开发机器上的端口 27017 重定向到 docker 容器上的端口 27018。

如果您尝试发布一系列端口,则必须-p为每个端口设置单独的参数。

于 2021-02-01T17:23:18.643 回答