Я пытаюсь подключить 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
Итак, вот решение,
Объемы докеров в моей машине были полны из предыдущего материала. поэтому я удалил его с помощью docker volume prune
после этого в фляжном коде,
client = MongoClient('mongodb://mongodb:27017/')
теперь все работает.
os.environ['DB_PORT_27017_TCP_ADDR']
наmongodb
[initandlisten] shutting down with code:100