Python 无法将Docker中的MongoDB与Flask连接到pymongo客户端

Python 无法将Docker中的MongoDB与Flask连接到pymongo客户端,python,mongodb,docker,flask,Python,Mongodb,Docker,Flask,我正在尝试将mongodb与docker内部的flask应用程序连接。它不起作用。我试过它在Mac上工作,但我用的是Windows 这是我的docker文件 version: '3.4' services: docker_flask_mongo: build: . ports: - '5000:5000' mongodb: image: mongo:3.4 ports: - '27017:27017' 在PythonFlask

我正在尝试将mongodb与docker内部的flask应用程序连接。它不起作用。我试过它在Mac上工作,但我用的是Windows

这是我的docker文件

version: '3.4'

services:
  docker_flask_mongo:
    build: .
    ports:
      - '5000:5000'

  mongodb:
    image: mongo:3.4
    ports:
      - '27017:27017'
在PythonFlask应用程序中,我尝试了这个

client = MongoClient(os.environ['DB_PORT_27017_TCP_ADDR'],
            27017)
不起作用

更新:

完整代码:

import os
from flask import Flask, redirect, url_for, request, render_template
from pymongo import MongoClient

client = MongoClient(os.environ['DB_PORT_27017_TCP_ADDR'],
            27017)
db = client.tododb

app = Flask(__name__)

@app.route('/')
def test_code():
    item_doc = {
        'name': "a" ,
        'description': "b"
    }
    db.tododb.insert_one(item_doc)

    return "done"

if __name__ == "__main__":
    app.run(host='0.0.0.0', debug=True)
完整日志:

连接到dockerfolder\u mongodb\u 1、dockerfolder\u docker\u flask\u mongo\u 1 mongodb|u 1 | 2018-08-27T13:14:18.349+0000 I控制 [initandlisten]MongoDB启动:pid=1端口=27017 dbpath=/data/db 64位主机=E086871A3EB mongodb_1| 2018-08-27T13:14:18.349+0000 I控制[initandlisten]数据库版本 v3.4.14 mongodb|u 1 | 2018-08-27T13:14:18.350+0000 I控制 [initandlisten]git版本:gghgghg。。。。。。。。。。。。。。 mongodb|u 1 | 2018-08-27T13:14:18.350+0000 I控制 [initandlisten]OpenSSL版本:OpenSSL 1.0.1t 2016年5月3日mongodb_1 |2018-08-27T13:14:18.350+0000 I控制[initandlisten]分配器: tcmalloc mongodb|1 | 2018-08-27T13:14:18.350+0000 I 控制[initandlisten]模块:无mongodb_1| 2018-08-27T13:14:18.350+0000 I控制[initandlisten]构建 环境:mongodb|u 1 | 2018-08-27T13:14:18.350+0000 I 控件[initandlisten]distmod:debian81 mongodb_1| 2018-08-27T13:14:18.350+0000 I控制[initandlisten]搜索: x86_64 mongodb|1 | 2018-08-27T13:14:18.350+0000 I控制 [initandlisten]目标搜索:x86\u 64 mongodb\u 1| 2018-08-27T13:14:18.350+0000 I控制[initandlisten]选项:{} mongodb|u 1 | 2018-08-27T13:14:18.358+0000 I存储 mongodb|u 1 | 2018-08-27T13:14:18.358+0000 I 存储[initandlisten]**警告:使用XFS文件系统是错误的 强烈建议使用WiredTiger存储引擎mongodb_1
|2018-08-27T13:14:18.358+0000 I存储[initandlisten]***
参见mongodb_1
|2018-08-27T13:14:18.359+0000 I存储[initandlisten]错误 创建日志目录/data/db/journal boost::filesystem::create_目录:设备上没有剩余空间: “/data/db/journal”mongodb_1| 2018-08-27T13:14:18.359+0000 I存储[initandlisten]中出现异常 initAndListen std::异常:boost::filesystem::create_目录:否 设备上剩余空间:“/data/db/journal”,终止mongodb_1
|2018-08-27T13:14:18.359+0000 I网络[initandlisten]关闭: 正在关闭侦听套接字。。。mongodb_1| 2018-08-27T13:14:18.359+0000 I网络[initandlisten]正在删除 套接字文件:/tmp/mongodb-27017.sock mongodb_1| 2018-08-27T13:14:18.359+0000 I网络[initandlisten]关闭: 正在刷新诊断日志。。。mongodb_1| 2018-08-27T13:14:18.360+0000 I控制[initandlisten]现在退出 mongodb|u 1 | 2018-08-27T13:14:18.360+0000 I控制 [initandlisten]正在关闭,代码为:100 docker_flask_mongo_1|* 服务烧瓶应用程序“应用程序”(惰性装载)docker_Flask_mongo_1|* 环境:生产docker_flask_mongo_1 |警告:请勿使用 生产环境中的开发服务器。 docker_flask_mongo_1|使用生产WSGI服务器。 docker_flask_mongo_1|*调试模式:在docker_flask_mongo_1|上* 正在运行(按CTRL+C退出) docker_flask_mongo_1|*使用stat dockerfolder_mongodb_1重新启动 退出,代码为100 docker_flask_mongo_1 |*调试器处于活动状态! docker_flask_mongo_1 |*调试器PIN:470-553-089

当我转到
localhost:5000
时,我得到以下错误

pymongo.errors.ServerSelectionTimeoutError
pymongo.errors.ServerSelectionTimeoutError: mongodb:27017: [Errno -2] Name or service not known

这就是解决方案

我机器中的Docker卷已经满了以前的内容。因此,我使用
docker volume prune

在那之后,在烧瓶代码中

client = MongoClient('mongodb://mongodb:27017/')

现在一切都好了

os.environ['DB\u PORT\u 27017\u TCP\u ADDR']
替换为
mongodb
它不工作,
[initandlisten]关闭为code:100
发布完整日志日志日志日志在那里