Python 无法将Docker中的MongoDB与Flask连接到pymongo客户端
我正在尝试将mongodb与docker内部的flask应用程序连接。它不起作用。我试过它在Mac上工作,但我用的是Windows 这是我的docker文件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
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
发布完整日志日志日志日志在那里