简体   繁体   English

在 docker compose 中使用 MongoDB 的连接超时错误

[英]Connection timeout error using MongoDB in docker compose

I'm getting this error when trying to add data to MongoDB via a Flask app.尝试通过 Flask 应用程序向 MongoDB 添加数据时出现此错误。 MongoDB and Flask app are services in my docker-compose. MongoDB 和 Flask 应用程序是我的 docker-compose 中的服务。

ConnectionError: HTTPConnectionPool(host='127.0.0.0', port=8000): Max retries exceeded with url: /this (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x10cd54190>: Failed to establish a new connection: [Errno 60] Operation timed out'))

app.py应用程序.py

import os

from flask import Flask, g
from flask import request
from pymongo import MongoClient


app = Flask(__name__)


@app.route('/this', methods=['POST'])
def this():
    db = g.conn.warehouse
    clx = db.this
    if request.method == 'POST':
        data = request.get_json()
        print(data)
        clx.insert_one(data)


@app.before_request
def before_request():
    MONGODB_HOST = 'mongodb'
    g.conn = MongoClient(MONGODB_HOST, 27017)


@app.teardown_request
def teardown_request(exception):
    g.conn.close()

Dockerfile Dockerfile

FROM python:3.8-slim-buster
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["python3", "-m" , "flask", "run", "--host=0.0.0.0"]

docker-compose.yml码头工人-compose.yml

version: "3.8"
services:
  web:
    build: .
    ports:
      - 8000:5000
    links:
      - mongodb
  redis:
    image: "redis:alpine"
  mongodb:
    image: "mongo:latest"
    ports:
      - 27017:27017
    volumes:
      - mongo_data:/data/db

volumes:
  mongo_data:

requirements.txt要求.txt

flask
pymongo
redis

In a notebook, I'm trying to make this POST request在笔记本中,我正在尝试发出此 POST 请求

import requests
requests.post('http://127.0.0.0:8000/this', headers={'Content-Type': 'application/json'}, json={'a': 1})

Thanks in advance for any help.提前感谢您的帮助。

Please try as follow:请尝试如下:

  • docker-composer.yml码头工人作曲家.yml

     version: "3.8" services: web: build: . ports: - 8000:5000 links: - mongodb environment: - MONGODB_HOST = mongodb redis: image: "redis:alpine" mongodb: image: "mongo:latest" hostname: mongodb ports: - 27017:27017 volumes: - mongo_data:/data/db volumes: mongo_data:
  • app.py应用程序.py

     @app.before_request def before_request(): MONGODB_HOST = os.environ('MONGODB_HOST') g.conn = MongoClient(MONGODB_HOST, 27017)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM