Python Flask mongoengine/pymongo:mongo 的端口 27018 上的连接被拒绝
Python Flask mongoengine/pymongo: Connection refused on port 27018 of mongo
错误是:
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
您的 docker run
命令不正确。 -p
参数的格式为 -p CONTAINER_PORT:HOST_PORT
.
您的 -p 27018:27017
参数将所有请求从您开发机器上的端口 27017 重定向到您的 docker 容器上的端口 27018。
如果您尝试发布一系列端口,则必须为每个端口设置单独的 -p
参数。
错误是:
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
您的 docker run
命令不正确。 -p
参数的格式为 -p CONTAINER_PORT:HOST_PORT
.
您的 -p 27018:27017
参数将所有请求从您开发机器上的端口 27017 重定向到您的 docker 容器上的端口 27018。
如果您尝试发布一系列端口,则必须为每个端口设置单独的 -p
参数。