Создание и запуск контейнерного веб-приложения Python локально с помощью MongoDB

Эта статья является частью руководства по контейнеризации и развертыванию контейнерного веб-приложения Python в службе приложение Azure. Служба приложений позволяет запускать контейнерные веб-приложения и развертывать их с помощью возможностей непрерывной интеграции и непрерывного развертывания (CI/CD) с помощью Docker Hub, Реестр контейнеров Azure и Visual Studio Team Services. В этой части руководства вы узнаете, как создать и запустить контейнерное веб-приложение Python локально. Этот шаг является необязательным и не требуется для развертывания примера приложения в Azure.

Для локального запуска образа Docker в среде разработки требуется настройка за пределами развертывания в Azure. Думайте об этом как об инвестициях, которые могут упростить будущие циклы разработки, особенно когда вы переходите за рамки примеров приложений, и вы начинаете создавать собственные веб-приложения. Чтобы развернуть примеры приложений для Django и Flask, можно пропустить этот шаг и перейти к следующему шагу в этом руководстве. Вы всегда можете вернуться после развертывания в Azure и выполнить эти действия.

На следующей схеме служб выделены компоненты, описанные в этой статье.

A screenshot of the Tutorial - Containerized Python App on Azure with local part highlighted.

1. Клонирование или скачивание примера приложения

Клонируйте репозиторий.

# Django
git clone https://github.com/Azure-Samples/msdocs-python-django-container-web-app.git

# Flask
git clone https://github.com/Azure-Samples/msdocs-python-flask-container-web-app.git

Затем перейдите в эту папку:

# Django
cd msdocs-python-django-container-web-app

# Flask
cd msdocs-python-flask-container-web-app

2. Создание образа Docker

Если вы используете один из примеров приложений платформы, доступных для Django и Flask, вы можете перейти. Если вы работаете с собственным примером приложения, посмотрите, как настроены примеры приложений, в частности Dockerfile в корневом каталоге.

Для этих инструкций требуется Visual Studio Code и расширение Docker. Перейдите в пример папки, клонированную или скачав, и откройте VS Code с помощью команды code ..

Примечание.

Действия, описанные в этом разделе, требуют запуска управляющей программы Docker. В некоторых установках, например в Windows, необходимо открыть Docker Desktop, который запускает управляющую программу, прежде чем продолжить.

Instructions Снимок экрана
Откройте расширение Docker.

Если расширение Docker сообщает об ошибке "Не удалось подключиться", убедитесь, что Docker установлен и запущен. Если вы впервые работаете с Docker, у вас, вероятно, нет контейнеров, образов или подключенных реестров.
A screenshot showing how to open the Docker extension in Visual Studio Code.
Создание образа.
  • В Обозреватель проекта, где отображаются файлы проекта, щелкните файл Dockerfile правой кнопкой мыши и выберите "Создать образ...".

  • Кроме того, можно использовать палитру команд (F1 или CTRL+SHIFT+P) и введите "Образы Docker: сборка изображений" для вызова команды.

Дополнительные сведения о синтаксисе Dockerfile см. в справочнике по Dockerfile.
A screenshot showing how to build the Docker image in Visual Studio Code.
Убедитесь, что изображение создано.
  • Перейдите в раздел IMAGES расширения Docker.

  • Найдите недавно созданный образ. Имя образа контейнера — msdocspythoncontainerwebapp, заданное в vscode/tasks.json .

A screenshot showing how to confirm the built image in Visual Studio Code.

На этом этапе вы создали образ локально. Созданный образ имеет имя msdocspythoncontainerwebapp и тег "latest". Теги — это способ определения сведений о версиях, предполагаемого использования, стабильности или других сведений. Дополнительные сведения см. в статье Рекомендации по использованию тегов и управлению версиями образов контейнеров.

Изображения, созданные из VS Code или с помощью интерфейса командной строки Docker, также можно просматривать с помощью классического приложения Docker .

3. Настройка MongoDB

Для работы с этим руководством требуется база данных MongoDB с именем restaurants_reviews и коллекция с именем restaurants_reviews. В этом разделе показано, как использовать локальную установку MongoDB или Azure Cosmos DB для MongoDB для MongoDB для создания и доступа к базе данных и коллекции.

Важно!

Не используйте базу данных MongoDB, которую вы будете использовать в рабочей среде. В этом руководстве вы сохраните строка подключения MongoDB в переменной среды. Это делает его видимым для всех, кто может проверять контейнер (например, с помощью docker inspect).

Шаг 1. Установите MongoDB , если это еще не так.

Вы можете проверка для установки MongoDB с помощью оболочки MongoDB (mongosh).

  • Следующая команда входит в оболочку и предоставляет версию сервера mongosh и mongoDB, установленного в вашей системе:

    mongosh
    
  • Следующая команда предоставляет только версию сервера MongoDB, установленного в вашей системе:

    mongosh --quiet --exec 'db.version()'
    

Если эти команды не работают, может потребоваться явно установить mongosh или подключить mongosh к серверу MongoDB.

Альтернативой в некоторых установках является непосредственное вызов управляющей программы Mongo.

mongod --version

Шаг 2. Измените файл mongod.cfg , чтобы добавить IP-адрес компьютера.

В файле конфигурации mongod есть ключ, определяющий bindIp имена узлов и IP-адреса, которые MongoDB прослушивает клиентские подключения. Добавьте текущий IP-адрес локального компьютера разработки. Пример приложения, запущенного локально в контейнере Docker, будет взаимодействовать с хост-компьютером с этим адресом.

Например, часть файла конфигурации должна выглядеть следующим образом:

net:
  port: 27017
  bindIp: 127.0.0.1,<local-ip-address>

Перезапустите MongoDB, чтобы получить изменения в файле конфигурации.

Шаг 3. Создание базы данных и коллекции в локальной базе данных MongoDB.

Задайте для имени базы данных значение "restaurants_reviews", а имя коллекции — "restaurants_reviews". Базу данных и коллекцию можно создать с расширением VS Code MongoDB, оболочкой MongoDB (mongosh) или любым другим средством с поддержкой MondoDB.

Для оболочки MongoDB приведены примеры команд для создания базы данных и коллекции:

> help
> use restaurants_reviews
> db.restaurants_reviews.insertOne({})
> show dbs
> exit

На этом этапе локальный строка подключения MongoDB имеет значение "mongodb://127.0.0.1:27017/", имя базы данных — "restaurants_reviews", а имя коллекции — "restaurants_reviews".

4. Локальный запуск образа в контейнере

Сведения о том, как подключиться к MongoDB, можно запустить контейнер локально. В примере приложения ожидается, что сведения о подключении MongoDB передаются в переменных среды. Существует несколько способов получения переменных среды, передаваемых в контейнер локально. Каждый из них имеет преимущества и недостатки с точки зрения безопасности. Следует избегать проверка в любой конфиденциальной информации или оставлять конфиденциальную информацию в коде в контейнере.

Примечание.

При развертывании в Azure веб-приложение получит сведения о подключении из значений среды, заданных в качестве параметров конфигурации Служба приложений, и никакие изменения для сценария локальной среды разработки не применяются.

Instructions Снимок экрана
В папке VSCODE примера приложения файл settings.json определяет, что происходит при использовании расширения Docker и выберите "Выполнить или запустить интерактивный" в контекстном меню тега. Файл settings.json содержит два шаблона для (MongoDB local) каждого из них и (MongoDB Azure) сценариев.

Если вы используете локальную базу данных MongoDB:
  • Замените оба экземпляра <YOUR_IP_ADDRESS> IP-адресом.

  • Замените оба экземпляра <CONNECTION_STRING> строка подключения для базы данных MongoDB.

Если вы используете базу данных Azure Cosmos DB для MongoDB:
  • Замените оба экземпляра <CONNECTION_STRING> строка подключения Azure Cosmos DB для MongoDB.
Задайте параметр конфигурации, используемый docker.dockerPath шаблонами. Чтобы задатьdocker.dockerPath, откройте палитру команд VS Code (CTRL+SHIFT+P), введите "Параметры: открыть рабочую область Параметры", а затем введите "docker.dockerPath" в поле параметров поиска. Введите docker (без кавычки) для значения параметра.

Примечание.

Предполагается restaurants_reviews, что имя базы данных и имя коллекции.

A screenshot showing the settings.json file Visual Studio Code.
Запустите образ.
  • В разделе IMAGES расширения Docker найдите созданный образ.

  • Разверните изображение, чтобы найти последний тег, щелкните правой кнопкой мыши и выберите "Запустить интерактивный".

  • Вам будет предложено выбрать задачу, соответствующую вашему сценарию, либо "Интерактивная конфигурация запуска (local MongoDB)" или "Интерактивная конфигурация запуска (MongoDB Azure)".

При интерактивном запуске вы увидите все инструкции печати в коде, которые могут быть полезны для отладки. Вы также можете выбрать команду "Выполнить ", которая не является интерактивной и не открывает стандартные входные данные.

Важно!

Этот шаг завершается ошибкой, если для профиля терминала по умолчанию задано значение командной строки Windows. Чтобы изменить профиль по умолчанию, откройте палитру команд VS Code (CTRL+SHIFT+P), введите "Терминал: Выберите профиль по умолчанию", а затем выберите другой профиль из раскрывающегося меню, например Git Bash или PowerShell.

A screenshot showing how to run a Docker container in Visual Studio Code.
Убедитесь, что контейнер запущен.
  • В разделе CONTAINER расширения Docker найдите контейнер.

  • Разверните узел отдельных контейнеров и убедитесь, что запущено приложение msdocspythoncontainerwebapp. Если он запущен, вы увидите зеленый треугольник рядом с именем контейнера.

A screenshot showing how to confirm a Docker container is running in Visual Studio Code.
Протестируйте веб-приложение, щелкнув правой кнопкой мыши имя контейнера и выбрав "Открыть в браузере".

Браузер откроется в браузере по умолчанию как "http://127.0.0.1:8000" для Django или "http://127.0.0.1:5000/" для Flask.
A screenshot showing how to browse the endpoint of a Docker container in Visual Studio Code.
Остановите контейнер.
  • В разделе CONTAINER расширения Docker найдите запущенный контейнер.

  • Щелкните контейнер правой кнопкой мыши и нажмите кнопку "Остановить".

A screenshot showing how to stop a running Docker container in Visual Studio Code.

Совет

Вы также можете запустить контейнер, выбрав конфигурацию запуска или отладки. Задачи расширения Docker в tasks.json вызываются при запуске или отладке. Вызываемая задача зависит от выбранной конфигурации запуска. Для задачи "Docker: Python (local MongoDB)" укажите <YOUR-IP-ADDRESS>. Для задачи "Docker: Python (MongoDB Azure)" укажите <CONNECTION-STRING>.

Вы также можете запустить контейнер из образа и остановить его с помощью приложения Docker Desktop .

Следующий шаг