Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask应用程序仍在尝试连接到localhost:27017,即使指定了不同的mongo_uri_Python_Docker_Flask_Docker Compose_Dockerfile - Fatal编程技术网

Python Flask应用程序仍在尝试连接到localhost:27017,即使指定了不同的mongo_uri

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

我已经创建了一个flask应用程序,它连接到mongod服务器以获取数据。我在不同的docker容器中运行mongod和flask。下面是我的docker compose文件和flask的docker文件

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'