代码之家  ›  专栏  ›  技术社区  ›  TheTechGuy

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

  •  2
  • TheTechGuy  · 技术社区  · 6 年前

    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'
    

    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 I控制 64位主机=e086871a3aeb mongodb_| 2018-08-27T13:14:18.349+0000 I控制[initandlisten]数据库版本 [initandlisten]git版本:gghgghg。。。。。。。。。。。。。。 mongodb|1 | 2018-08-27T13:14:18.350+0000 I控制 [initandlisten]OpenSSL版本:OpenSSL 1.0.1t 2016年5月3日mongodb\u 1 tcmalloc mongodb|1 | 2018-08-27T13:14:18.350+0000我 控制[initandlisten]模块:无mongodb\u 1| 2018-08-27T13:14:18.350+0000 I控制[初始化和侦听]生成 环境:mongodb|1 | 2018-08-27T13:14:18.350+0000 I 控件[initandlisten]distmod:debian81 mongodb_1| 2018-08-27T13:14:18.350+0000 I控制[初始化和侦听]搜索: x86_64mongodb_1 | 2018-08-27T13:14:18.350+0000 I控制 2018-08-27T13:14:18.350+0000 I控制[initandlisten]选项:{} [initandlisten]mongodb|1 | 2018-08-27T13:14:18.358+0000我 存储[initandlisten]**警告:使用XFS文件系统是
    |2018-08-27T13:14:18.358+0000 I存储[初始化并侦听]**
    http://dochub.mongodb.org/core/prodnotes-filesystem mongodb一
    创建日志目录/数据/数据库/日志 boost::filesystem::create_directory:设备上没有剩余空间: “/data/db/journal”云数据库1| initAndListen std::异常:boost::filesystem::create_目录:否
    |2018-08-27T13:14:18.359+0000 I网络[initandlisten]关闭: 2018-08-27T13:14:18.359+0000 I网络[initandlisten]删除 套接字文件/tmp/mongodb-27017.sock mongodb_1| 正在刷新诊断日志。。。mongodb一| 2018-08-27T13:14:18.360+0000 I控制[初始化和侦听]现在退出 mongodb|1 | 2018-08-27T13:14:18.360+0000 I控制 [initandlisten]关闭时代码:100 docker_flask_mongo_1| * 服务瓶app“app”(延迟加载)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 |*调试器已激活!

    localhost:5000 ,我得到以下错误

    pymongo.errors.ServerSelectionTimeoutError
    pymongo.errors.ServerSelectionTimeoutError: mongodb:27017: [Errno -2] Name or service not known
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   TheTechGuy    6 年前

    所以这是解决办法,

    我机器上的Docker卷已经满了。所以我用 docker volume prune

    之后在烧瓶密码里,

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

    现在一切正常了。