Невозможно соединить MongoDB с Flask в Docker с клиентом pymongo

1

Я пытаюсь подключить mongodb с моей флягой App внутри докера. Он не работает. Я пробовал эту ссылку, она работает на Mac, но я использую Windows.

Это файл моего докера.

version: '3.4'

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

  mongodb:
    image: mongo:3.4
    ports:
      - '27017:27017'

в приложении python flask Я пробовал это

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 я CONTROL [initandlisten] MongoDB start: pid = 1 port = 27017 dbpath =/data/db 64-bit host = e086871a3aeb mongodb_1 | 2018-08-27T13: 14: 18.349 + 0000 я CONTROL [initandlisten] версия db v3.4.14 mongodb_1 | 2018-08-27T13: 14: 18.350 + 0000 я CONTROL [initandlisten] git версия: gghgghg.............. mongodb_1 | 2018-08-27T13: 14: 18.350 + 0000 я CONTROL [initandlisten] OpenSSL версия: OpenSSL 1.0.1t 3 мая 2016 г. mongodb_1 | 2018-08-27T13: 14: 18.350 + 0000 я CONTROL [initandlisten] распределитель: tcmalloc mongodb_1 | 2018-08-27T13: 14: 18.350 + 0000 я CONTROL [initandlisten] модули: нет mongodb_1 | 2018-08-27T13: 14: 18.350 + 0000 я CONTROL [initandlisten] среда сборки: mongodb_1 | 2018-08-27T13: 14: 18.350 + 0000 я CONTROL [initandlisten] distmod: debian81 mongodb_1 | 2018-08-27T13: 14: 18.350 + 0000 я CONTROL [initandlisten] distarch: x86_64 mongodb_1 | 2018-08-27T13: 14: 18.350 + 0000 я CONTROL [initandlisten] target_arch: x86_64 mongodb_1 | 2018-08-27T13: 14: 18.350 + 0000 я CONTROL [initandlisten] options: {} mongodb_1 | 2018-08-27T13: 14: 18.358 + 0000 я ХРАНЕНИЕ [initandlisten] mongodb_1 | 2018-08-27T13: 14: 18.358 + 0000 я ХРАНЕНИЕ [initandlisten] ** ПРЕДУПРЕЖДЕНИЕ. Использование файловой системы XFS настоятельно рекомендуется с помощью механизма хранения WiredTiger mongodb_1
| 2018-08-27T13: 14: 18.358 + 0000 я ХРАНЕНИЕ [initandlisten] **
См http://dochub.mongodb.org/core/prodnotes-filesystem mongodb_1
| 2018-08-27T13: 14: 18.359 + 0000 я ХРАНЕНИЕ [initandlisten] ошибка создания журнала dir/data/db/journal boost :: filesystem :: create_directory: на устройстве нет места: "/data/db/journal" mongodb_1 | 2018-08-27T13: 14: 18.359 + 0000 я STORAGE [initandlisten] исключение в initAndListen std :: exception: boost :: filesystem :: create_directory: на устройстве нет места: "/data/db/journal", завершение mongodb_1
| 2018-08-27T13: 14: 18.359 + 0000 я СЕТЬ [initandlisten] shutdown: собирается закрыть прослушивающие сокеты... mongodb_1 | 2018-08-27T13: 14: 18.359 + 0000 я NETWORK [initandlisten] удаление файла сокета: /tmp/mongodb-27017.sock mongodb_1 | 2018-08-27T13: 14: 18.359 + 0000 я СЕТЬ [initandlisten] shutdown: собирается очистить diaglog... mongodb_1 | 2018-08-27T13: 14: 18.360 + 0000 я CONTROL [initandlisten] теперь выходит из mongodb_1 | 2018-08-27T13: 14: 18.360 + 0000 я CONTROL [initandlisten] выключение с кодом: 100 docker_flask_mongo_1 | * Приложение "Приложение для флага" (ленивая загрузка) docker_flask_mongo_1 | * Окружающая среда: производство docker_flask_mongo_1 | ПРЕДУПРЕЖДЕНИЕ. Не используйте сервер разработки в рабочей среде. docker_flask_mongo_1 | Вместо этого используйте сервер WSGI. docker_flask_mongo_1 | * Режим отладки: on 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
  • 0
    замените os.environ['DB_PORT_27017_TCP_ADDR'] на mongodb
  • 1
    это не работает, [initandlisten] shutting down with code:100
Показать ещё 2 комментария
Теги:
docker
flask

1 ответ

2
Лучший ответ

Итак, вот решение,

Объемы докеров в моей машине были полны из предыдущего материала. поэтому я удалил его с помощью docker volume prune

после этого в фляжном коде,

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

теперь все работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню