Невозможно соединить MongoDB с Flask в Docker с клиентом pymongo - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь соединить mongodb с моим приложением в фляге внутри докера. Это не работает. Я пробовал эту ссылку, она работает в 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 I CONTROL [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 I CONTROL [initandlisten] git version: gghgghg .............. mongodb_1 | 2018-08-27T13: 14: 18.350 + 0000 I CONTROL [initandlisten] Версия OpenSSL: OpenSSL 1.0.1t 3 мая 2016 г. mongodb_1 | 2018-08-27T13: 14: 18.350 + 0000 I CONTROL [initandlisten] распределитель: tcmalloc mongodb_1 | 2018-08-27T13: 14: 18.350 + 0000 I Модули управления [initandlisten]: нет mongodb_1 | 2018-08-27T13: 14: 18.350 + 0000 I CONTROL [initandlisten] build среда: 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] distarch: x86_64 mongodb_1 | 2018-08-27T13: 14: 18.350 + 0000 I CONTROL [initandlisten] target_arch: x86_64 mongodb_1 | 2018-08-27T13: 14: 18.350 + 0000 I CONTROL опции [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 STORAGE [initandlisten] **
См http://dochub.mongodb.org/core/prodnotes-filesystem mongodb_1
| 2018-08-27T13: 14: 18.359 + 0000 I ХРАНЕНИЕ [initandlisten] ошибка создание журнала dir / data / db / journal boost :: filesystem :: create_directory: на устройстве не осталось места: "/ data / db / journal" mongodb_1 | 2018-08-27T13: 14: 18.359 + 0000 I ХРАНЕНИЕ [initandlisten] исключение в initAndListen std :: исключение: boost :: filesystem :: create_directory: нет на устройстве осталось место: "/ data / db / journal", завершение mongodb_1
| 2018-08-27T13: 14: 18.359 + 0000 I NETWORK [initandlisten] завершение работы: собирается закрыть сокеты прослушивания ... mongodb_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] завершение работы: собираюсь сбросить диаглог ... mongodb_1 | 2018-08-27T13: 14: 18.360 + 0000 I CONTROL [initandlisten] сейчас выходит mongodb_1 | 2018-08-27T13: 14: 18.360 + 0000 I КОНТРОЛЬ [initandlisten] завершает работу с кодом: 100 docker_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 | * Перезапуск со статом 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

1 Ответ

0 голосов
/ 27 августа 2018

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

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

после этого в коде колбы,

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...