当前位置: 首页 > 知识库问答 >
问题:

在Docker中无法用pymongo客户端连接MongoDB和Flask

漆雕硕
2023-03-14
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控件[initandlisten]MongoDB开始:pid=1 port=27017 dbpath=/data/db 64位主机=E086871a3aeb mongodb_1 2018-08-27t13:14:18.349+0000 I控件[initandlisten]db version v3.4.14 mongodb_1 2018-08-27t13:14:18.350+0000 I控件mongodb_1 2018-08-27T13:14:18.350+0000 I CONTROL[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 I CONTROL[initandlisten]模块:none mongodb_1 2018-08-27T13:14:18.350+0000 I CONTROL[initandlisten]构建环境:mongodb_1 2018-08-27T13:14:18.350+0000 I CONTROL[initandlisten]distmod:debian81 mongodb_1 2018-08-27t13:14:18.350+0000 I CONTROL[initandlisten]distary:x86_64 mongodb_1 2018-08-27t13:14:18.350+0000 I控件[initandlisten]target_arch:x86_64 mongodb_1 2018-08-27t13:14:18.350+0000 I控件[initandlisten]选项:{}mongodb_1 2018-08-27t13:14:18.358+0000 I存储[initandlisten]mongodb_1 2018-08-27t13:14:18.358+0000 I存储[initandlisten]**警告:强烈建议使用XFS文件系统使用WiredTiger存储引擎mongodb_1
2018-08-27t13:14:18.358+0000 I存储[initandlisten]**
参见http://dochub.mongodb.org/core/prodnotes-filesystem mongodb_1
2018-08-27t13:14:18.359 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 I NETWORKmongodb_1 2018-08-27t13:14:18.359+0000 I NETWORK[initandlisten]删除套接字文件:/tmp/mongodb-27017.sock mongodb_1 2018-08-27t13:14:18.359+0000 I NETWORK[initandlisten]关闭:要刷新diaglog...mongodb_1 2018-08-27t13:14:18.360+0000 I控件[initandlisten]现在退出mongodb_1 2018-08-27t13:14:18.360+0000 I控件[initandlisten]关闭,代码:100docker_flask_mongo_1*服务Flask应用程序“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_mongo_1退出代码100 docker_flask_mongo_1*调试器处于活动状态!docker_flask_mongo_1*调试器引脚:470-553-089

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

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

共有1个答案

霍财
2023-03-14

所以解决办法是这样的,

我的机器中的Docker卷从以前的东西中已经满了。所以我使用Docker卷剪枝删除了它

之后在烧瓶代码中,

client = MongoClient('mongodb://mongodb:27017/')
 类似资料:
  • 您似乎试图通过本机驱动程序端口上的HTTP访问MongoDB。 而且日志显示我的mongodb是健康的。我想是我试图通过浏览器访问的最后一行。 2017-01-25T21:11:13.509+0000 I JOURNAL[initandlisten]JOURNAL dir=/data/db/Journal2017-01-25T21:11:13.509+0000 I JOURNAL[initandl

  • 我正在尝试连接到我的AWS S3存储桶,以便根据这些链接的说明上传文件。 http://docs.aws.amazon.com/AmazonS3/latest/dev/UploadObjSingleOpJava.html http://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/credentials.html#credenti

  • 我编写了一个简单的HBase客户端程序来在我的HBase集群(1个主服务器和3个区域服务器)中执行CRUD操作。Zookeeper实例仅在主服务器中运行,仲裁包括所有4台服务器。集群运行良好,可以使用YCSB客户端执行读/写操作(意味着服务器/Zookeeper端没有任何错误)。 现在,在eclipse类路径中,我添加了所有HBase库和hbase-0.94.7.jar(包含hbase-defau

  • 我花了几个小时来诊断这个问题,我想看看有没有pymongo专家有什么想法: 以下代码行: 连接=pymongo。连接('localhost',27017) 生成以下错误: /usr/local/ceral/python/2.7.3/bin/python2。7/Users/danwilson/Dropbox/Projects/mysite/app。py 回溯(最后一次调用): 文件“/Users/d

  • 我无法获取上一个已知位置。我已经在谷歌控制台中启用了地理编码API和谷歌地点API的Android。我在清单文件中添加了 API 密钥: 但我不断在控制台中收到一条消息:“无法连接到Google API客户端:连接结果{状态代码=API_UNAVAILABLE,分辨率=空}” 更新 我使用谷歌示例 onConnected和onConnectionFailed不调用。 而且我也使用Android反应

  • 我正在尝试用docker-compose.yml连接MongoDb和Spring Boot。 就这样- 我的Dockerfile for Spring pom.xml插件用于构建JAR_FILE- application.properties文件 我的问题 当我运行“maven package”构建我的jar时,我得到以下错误:我的jar文件没有创建 当我运行docker-compose.yml时