簡體   English   中英

在 docker compose 中使用 MongoDB 的連接超時錯誤

[英]Connection timeout error using MongoDB in docker compose

嘗試通過 Flask 應用程序向 MongoDB 添加數據時出現此錯誤。 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'))

應用程序.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

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"]

碼頭工人-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:

要求.txt

flask
pymongo
redis

在筆記本中,我正在嘗試發出此 POST 請求

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

提前感謝您的幫助。

請嘗試如下:

  • 碼頭工人作曲家.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:
  • 應用程序.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