Пример использования Mongo DB в python приложении с docker-compose конфигурацией
Данный проект является простейшей реализацией бэкенда для приложения TODO-List: приложения, в котором можно создавать, редактировать и удалять TODO карточки.
Проект создан с помощью простого и интуитивного веб-фреймворка для python под названием Flask. Весь проект состоит из одного файла app.py
, в котором описаны основные endpoints: для вывода полного списка карточек, для вывода только тех карточек, которые ещё не выполнены, и так далее. Также внутри app.py
находится код инициализации клиента для MongoDB.
ПРИМЕЧАНИЕ: данный проект создан исключительно с целью демонстрации использования MongoDB из приложений реализованных на языке python
и использования docker-compose
для облегчения процесса локальной разработки. Но в реализации API есть очень спорные моменты (спорные реализации методов, нет консистентности в формате ответов сервера, отсутствие авторизации и аутентификации, и так далее), поэтому данное приложение не должно использоваться как есть для реализации какого-либо серьёзного рабочего веб-приложения
Данный файл содержит описание pip пакетов, необходимых для запуска нашего Flask приложения
Данный проект включает в себя Dockerfile - набор инструкций описывающих docker-образ для нашего Flask приложения
Данный файл содержит описание конфигурации docker-compose. По сути, это описание всех сервисов, которые необходимы для полноценного функционирования нашего приложения и будут запущены в отдельных docker-контейнерах
Для запуска данного приложения вам понадобятся docker
и docker-compose
.
Если вы работаете под Windows, docker
и docker-compose
находятся внутри Docker Desktop for Windows
который можно установить вот таким образом.
Если же вы работаете под Linux, вам необходимо отдельно установить пакеты для docker
и docker-compose
. Вот как это можно сделать, например, под Ubuntu Linux:
- Установка
docker
: https://docs.docker.com/engine/install/ubuntu/ - Post-install steps для
docker
: https://docs.docker.com/engine/install/linux-postinstall/ - Установка
docker-compose
: https://docs.docker.com/compose/install/
Находясь в папке с приложением просто запустите: docker-compose up
, это должно повлечь за собой сборку образа для Flask приложения, скачивание образа для mongo
и запуск пары docker-контейнеров
В командной строке (Windows или Linux, тут не так важно) наберите и выполните команды:
curl http://localhost:5000/all
- вам в ответ должен вернуться пустой массив:[]
. Это ожидаемое поведение, поскольку мы не создали ни одной TODO карточкиcurl -X POST -F 'name=Name' -F 'desc=Desc' -F 'date=2002-02-02' http://localhost:5000/add
- тут вы должны увидеть сообщениеA new card has been added
- Снова запускаем
curl http://localhost:5000/all
- теперь ответ должен содержать непустой JSON массив с данными только что созданной TODO карточки
Тут я собрал некоторые статьи, которые помогут вам постичь основы того, чем являются docker контейнеры и образы, и чем они не являются:
- Что такое Docker: простыми словами о контейнеризации
- Docker-tutorial для новичков. Изучаем докер так, если бы он был игровой приставкой
- Руководство по docker-compose для начинающих
Разумеется, основным источником информации является официальная документация по docker и docker-compose, ссылки на которую уже содержатся выше в описании данного проекта