【发布时间】:2019-02-02 00:12:07
【问题描述】:
我正在尝试将 mongodb 与 docker 内的烧瓶应用程序连接起来。它不工作。我试过 this link, 它在 Mac 上工作,但我使用的是 Windows。
这是我的 docker compose 文件
version: '3.4'
services:
docker_flask_mongo:
build: .
ports:
- '5000:5000'
mongodb:
image: mongo:3.4
ports:
- '27017:27017'
在 python 烧瓶应用程序中我已经尝试过这个
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_mongodb_1、dockerfolder_docker_flask_mongo_1 mongodb_1 | 2018-08-27T13:14:18.349+0000 我控制 [initandlisten] MongoDB 启动:pid=1 端口=27017 dbpath=/data/db 64 位主机=e086871a3aeb mongodb_1 | 2018-08-27T13:14:18.349+0000 I CONTROL [initandlisten] 数据库版本 v3.4.14 mongodb_1 | 2018-08-27T13:14:18.350+0000 我控制 [initandlisten] git 版本:gghgghg....... mongodb_1 | 2018-08-27T13:14:18.350+0000 我控制 [initandlisten] OpenSSL 版本:OpenSSL 1.0.1t 2016 年 5 月 3 日 mongodb_1 | 2018-08-27T13:14:18.350+0000 I CONTROL [initandlisten] 分配器: tcmalloc mongodb_1 | 2018-08-27T13:14:18.350+0000 我 CONTROL [initandlisten] 模块:无 mongodb_1 | 2018-08-27T13:14:18.350+0000 我控制 [initandlisten] 构建 环境:mongodb_1 | 2018-08-27T13:14:18.350+0000 我 控制 [initandlisten] distmod: debian81 mongodb_1 | 2018-08-27T13:14:18.350+0000 我控制 [initandlisten] 分配: x86_64 mongodb_1 | 2018-08-27T13:14:18.350+0000 我控制 [initandlisten] target_arch: x86_64 mongodb_1 | 2018-08-27T13:14:18.350+0000 我控制 [initandlisten] 选项:{} mongodb_1 | 2018-08-27T13:14:18.358+0000 我存储 [initandlisten] mongodb_1 | 2018-08-27T13:14:18.358+0000 我 STORAGE [initandlisten] ** 警告:使用 XFS 文件系统是 强烈推荐使用 WiredTiger 存储引擎 mongodb_1
| 2018-08-27T13:14:18.358+0000 我存储 [initandlisten] **
见http://dochub.mongodb.org/core/prodnotes-filesystemmongodb_1
| 2018-08-27T13:14:18.359+0000 I STORAGE [initandlisten] 错误 创建日志目录 /data/db/journal boost::filesystem::create_directory:设备上没有剩余空间: "/data/db/journal" mongodb_1 | 2018-08-27T13:14:18.359+0000 I STORAGE [initandlisten] 中的异常 initAndListen std::exception: boost::filesystem::create_directory: 否 设备上剩余空间:“/data/db/journal”,终止 mongodb_1
| 2018-08-27T13:14:18.359+0000 我网络 [initandlisten] 关闭: 即将关闭监听套接字... mongodb_1 | 2018-08-27T13:14:18.359+0000 我网络 [initandlisten] 删除 套接字文件:/tmp/mongodb-27017.sock mongodb_1 | 2018-08-27T13:14:18.359+0000 我网络 [initandlisten] 关闭: 将刷新 diaglog... mongodb_1 | 2018-08-27T13:14:18.360+0000 I CONTROL [initandlisten] 现在退出 mongodb_1 | 2018-08-27T13:14:18.360+0000 我控制 [initandlisten] 使用代码关闭:100 docker_flask_mongo_1 | * 服务 Flask 应用程序“应用程序”(延迟加载) docker_flask_mongo_1 | * 环境:生产 docker_flask_mongo_1 |警告:请勿使用 生产环境中的开发服务器。 docker_flask_mongo_1 |请改用生产 WSGI 服务器。 docker_flask_mongo_1 | * 调试模式:在 docker_flask_mongo_1 | * 在http://0.0.0.0:5000/ 上运行(按 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
【问题讨论】:
-
用
mongodb替换os.environ['DB_PORT_27017_TCP_ADDR'] -
它不起作用,
[initandlisten] shutting down with code:100 -
发布完整日志
-
日志在那里
标签: python mongodb docker flask