Python Flask应用程序仍在尝试连接到localhost:27017,即使指定了不同的mongo_uri
我已经创建了一个flask应用程序,它连接到mongod服务器以获取数据。我在不同的docker容器中运行mongod和flask。下面是我的docker compose文件和flask的docker文件Python Flask应用程序仍在尝试连接到localhost:27017,即使指定了不同的mongo_uri,python,docker,flask,docker-compose,dockerfile,Python,Docker,Flask,Docker Compose,Dockerfile,我已经创建了一个flask应用程序,它连接到mongod服务器以获取数据。我在不同的docker容器中运行mongod和flask。下面是我的docker compose文件和flask的docker文件 version: "3.3" services: flaskapp: build: context: . dockerfile: DockerFile networks: - bridge_network d
version: "3.3"
services:
flaskapp:
build:
context: .
dockerfile: DockerFile
networks:
- bridge_network
depends_on:
- mongodatabase
ports:
- 9000:5000
container_name: compose_flaskapp
mongodatabase:
image: mongo
networks:
- bridge_network
ports:
- 27017:27017
container_name: compose_mongo
command: mongod --bind_ip 0.0.0.0
volumes:
- mongodbdata:/data/db
networks:
bridge_network:
driver: bridge
volumes:
mongodbdata:
因为,flask应用程序和mongod将在不同的容器中运行。我在flask配置中添加了以下mongo_uri
MONGO_URI = 'mongodatabase://mongodb:27017/UTA_Enrollment'
但当我运行flask应用程序时,它仍然尝试连接到localhost:27017以连接到数据库。尽管我在配置中提到了不同的地址。
我得到下面提到的超时错误
pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused, Timeout: 30s, Topology Description: <TopologyDescription id: 5f6446c74ed2387c4f5117c6, topology_type: Single, servers:
[<ServerDescription('localhost', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('localhost:27017: [Errno 111] Connection refused')>]>
我注意到的另一件事是,当我正常运行上述代码时,mongouri被打印到控制台,但当我在docker中运行它时,它就不会被打印。烧瓶环境设置为“开发”。这可能是原因吗
此外,我使用dockerignore文件不复制pyc文件。所以这个问题似乎和缓存的预编译文件无关
我做错了什么?我认为您的
MONGO\u URI
设置不正确
试试这个:
MONGO_URI = 'mongodb://mongodatabase:27017/UTA_Enrollment'
您的python代码是什么样子的?似乎您没有使用“MONGO_URI”变量。我添加了带有注释的flask代码,请参见问题详细信息。
from flask import Flask
from flask_mongoengine import MongoEngine
from config import Config
from flask_restplus import Api
app = Flask(__name__)
app.config.from_object(Config)
#app.logger.info('%s -- moNGO uRI', app,config['MONGO_URI'])
print('%s -- moNGO uRI', app.config['MONGO_URI'])
#app.config["MONGO_URI"] = 'mongodb://mongodatabase:27017/UTA_Enrollment'
db = MongoEngine()
db.init_app(app)
api = Api()
api.init_app(app)
from application.routes import app
from application.apis import api
MONGO_URI = 'mongodb://mongodatabase:27017/UTA_Enrollment'