Sestavení a spuštění kontejnerizované webové aplikace v Pythonu místně pomocí MongoDB

Tento článek je součástí kurzu o kontejnerizaci a nasazení kontejnerizované webové aplikace v Pythonu do služby Aplikace Azure Service. App Service umožňuje spouštět kontejnerizované webové aplikace a nasazovat prostřednictvím funkcí kontinuální integrace a průběžného nasazování (CI/CD) pomocí Docker Hubu, Azure Container Registry a Visual Studio Team Services. V této části kurzu se dozvíte, jak sestavit a spustit kontejnerizovanou webovou aplikaci v Pythonu místně. Tento krok je volitelný a nevyžaduje se k nasazení ukázkové aplikace do Azure.

Místní spuštění image Dockeru ve vývojovém prostředí vyžaduje nastavení nad rámec nasazení do Azure. Představte si ji jako investici, která může usnadnit budoucí vývojové cykly, zejména když se přesunete mimo ukázkové aplikace a začnete vytvářet vlastní webové aplikace. Pokud chcete nasadit ukázkové aplikace pro Django a Flask, můžete tento krok přeskočit a přejít k dalšímu kroku v tomto kurzu. Po nasazení do Azure se můžete kdykoli vrátit a projít si tyto kroky.

Následující diagram služby zvýrazňuje součásti popsané v tomto článku.

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

1. Klonování nebo stažení ukázkové aplikace

Naklonujte úložiště:

# 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

Pak přejděte do této složky:

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

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

2. Sestavení image Dockeru

Pokud používáte některou z ukázkových aplikací architektury, které jsou dostupné pro Django a Flask, můžete začít. Pokud pracujete s vlastní ukázkovou aplikací, podívejte se, jak jsou ukázkové aplikace nastavené, zejména soubor Dockerfile v kořenovém adresáři.

Tyto pokyny vyžadují Visual Studio Code a rozšíření Dockeru. Přejděte do ukázkové složky, kterou jste naklonovali nebo stáhli, a otevřete VS Code pomocí příkazu code ..

Poznámka:

Kroky v této části vyžadují, aby byl démon Dockeru spuštěný. V některých instalacích, například ve Windows, musíte před pokračováním otevřít Docker Desktop, který spustí proces démon.

Pokyny Snímek obrazovky
Otevřete rozšíření Dockeru.

Pokud rozšíření Dockeru hlásí chybu Nepovedlo se připojit, ujistěte se, že je Docker nainstalovaný a spuštěný. Pokud pracujete s Dockerem poprvé, pravděpodobně nebudete mít žádné kontejnery, image ani připojené registry.
A screenshot showing how to open the Docker extension in Visual Studio Code.
Sestavte image.
  • V Průzkumníku projektu zobrazující soubory projektu klikněte pravým tlačítkem na soubor Dockerfile a vyberte Sestavit image....

  • Případně můžete k vyvolání příkazu použít paletu příkazů (F1 nebo Ctrl+Shift+P) a zadat Docker Images: Build Images.

Další informace o syntaxi souboru Dockerfile najdete v referenčních informacích k souboru Dockerfile.
A screenshot showing how to build the Docker image in Visual Studio Code.
Potvrďte, že image byla sestavena.
  • Přejděte do části IMAGES rozšíření Dockeru.

  • Vyhledejte nedávno sestavenou image. Název image kontejneru je msdocspythoncontainerwebapp, který je nastavený v souboru .vscode/tasks.json .

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

V tuto chvíli jste místně vytvořili image. Vytvořená image má název msdocspythoncontainerwebapp a značku "latest". Značky představují způsob, jak definovat informace o verzi, zamýšlené použití, stabilitu nebo jiné informace. Další informace najdete v tématu Doporučení pro označování a správu verzí imagí kontejnerů.

Image vytvořené z editoru VS Code nebo pomocí rozhraní příkazového řádku Dockeru je možné zobrazit také pomocí desktopové aplikace Dockeru.

3. Nastavení MongoDB

Pro účely tohoto kurzu potřebujete databázi MongoDB s názvem restaurants_reviews a kolekci s názvem restaurants_reviews. Kroky v této části ukazují, jak použít místní instalaci MongoDB nebo Azure Cosmos DB for MongoDB k vytvoření a přístupu k databázi a kolekci.

Důležité

Nepoužívejte databázi MongoDB, kterou budete používat v produkčním prostředí. V tomto kurzu uložíte připojovací řetězec MongoDB do proměnné prostředí. Díky tomu může každý, kdo může zkontrolovat váš kontejner (například pomocí docker inspect).

Krok 1: Nainstalujte MongoDB , pokud ještě není.

Instalaci MongoDB můžete zkontrolovat pomocí prostředí MongoDB (mongosh).

  • Následující příkaz zadá prostředí a poskytne vám verzi serveru mongosh i mongoDB nainstalovaného ve vašem systému:

    mongosh
    
  • Následující příkaz vám poskytne jenom verzi serveru MongoDB nainstalovaného ve vašem systému:

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

Pokud tyto příkazy nefungují, možná budete muset explicitně nainstalovat mongosh nebo připojit Mongosh k serveru MongoDB.

Alternativou v některých instalacích je přímé vyvolání démona Mongo.

mongod --version

Krok 2: Upravte soubor mongod.cfg a přidejte IP adresu počítače.

Konfigurační soubor Mongod má bindIp klíč, který definuje názvy hostitelů a IP adresy, které MongoDB naslouchá klientským připojením. Přidejte aktuální IP adresu místního vývojového počítače. Ukázková aplikace spuštěná místně v kontejneru Dockeru bude komunikovat s hostitelským počítačem s touto adresou.

Například část konfiguračního souboru by měla vypadat takto:

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

Restartujte MongoDB a vyzvedněte změny konfiguračního souboru.

Krok 3: Vytvoření databáze a kolekce v místní databázi MongoDB

Nastavte název databáze na "restaurants_reviews" a název kolekce na "restaurants_reviews". Databázi a kolekci můžete vytvořit pomocí rozšíření VS Code MongoDB, prostředí MongoDB (mongosh) nebo jakéhokoli jiného nástroje s podporou MondoDB.

Tady jsou ukázkové příkazy pro vytvoření databáze a kolekce v prostředí MongoDB:

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

V tuto chvíli je místní připojovací řetězec MongoDB "mongodb://127.0.0.1:27017/", název databáze je "restaurants_reviews" a název kolekce je "restaurants_reviews".

4. Místní spuštění image v kontejneru

S informacemi o tom, jak se připojit k MongoDB, jste připraveni spustit kontejner místně. Ukázková aplikace očekává předání informací o připojení MongoDB v proměnných prostředí. Proměnné prostředí předané do kontejneru můžete místně získat několika způsoby. Každá z nich má výhody a nevýhody z hlediska zabezpečení. Měli byste se vyhnout vrácení citlivých informací se kontrolou nebo ponechání citlivých informací v kódu v kontejneru.

Poznámka:

Když se nasadí do Azure, webová aplikace získá informace o připojení z hodnot prostředí nastavených jako nastavení konfigurace služby App Service a nepoužije se žádná změna pro místní scénář vývojového prostředí.

Pokyny Snímek obrazovky
Ve složce .vscode ukázkové aplikace definuje soubor settings.json, co se stane, když použijete rozšíření Dockeru, a v místní nabídce značky vyberte Spustit nebo Spustit Interactive. Soubor settings.json obsahuje dvě šablony pro jednotlivé (MongoDB local) scénáře a (MongoDB Azure) scénáře.

Pokud používáte místní databázi MongoDB:
  • Nahraďte obě instance <YOUR_IP_ADDRESS> vaší IP adresou.

  • Nahraďte obě instance <CONNECTION_STRING> připojovací řetězec databáze MongoDB.

Pokud používáte databázi Azure Cosmos DB for MongoDB:
  • Nahraďte obě instance <CONNECTION_STRING> službou Azure Cosmos DB for MongoDB připojovací řetězec.
docker.dockerPath Nastavte nastavení konfigurace používané šablonami. Pokud chcete nastavit docker.dockerPath, otevřete paletu příkazů VS Code (Ctrl+Shift+P), zadejte Předvolby: Otevřít pracovní prostor Nastavení a do pole Nastavení hledání zadejte docker.dockerPath. Jako hodnotu nastavení zadejte docker (bez uvozovek).

Poznámka:

Předpokládá se, že název databáze i název kolekce .restaurants_reviews

A screenshot showing the settings.json file Visual Studio Code.
Spusťte image.
  • V části IMAGES rozšíření Docker najděte vytvořenou image.

  • Rozbalením obrázku vyhledejte nejnovější značku, klikněte pravým tlačítkem myši a vyberte Spustit interaktivní.

  • Zobrazí se výzva k výběru úlohy, která je vhodná pro váš scénář, buď Interaktivní konfigurace spuštění (místní MongoDB), nebo Interaktivní konfigurace spuštění (Azure MongoDB).

Při interaktivním spuštění uvidíte v kódu všechny příkazy tisku, které můžou být užitečné pro ladění. Můžete také vybrat možnost Spustit , která není interaktivní a nezachová standardní vstup.

Důležité

Tento krok selže, pokud je výchozí profil terminálu nastavený na příkazový řádek (Windows). Pokud chcete změnit výchozí profil, otevřete paletu příkazů VS Code (Ctrl+Shift+P), zadejte "Terminal: Select Default Profile" (Terminál: Select Default Profile) a pak v rozevírací nabídce vyberte jiný profil, například Git Bash nebo PowerShell.

A screenshot showing how to run a Docker container in Visual Studio Code.
Ověřte, že je kontejner spuštěný.
  • V části KONTEJNERY rozšíření Docker najděte kontejner.

  • Rozbalte uzel Jednotlivé kontejnery a ověřte, že je spuštěný msdocspythoncontainerwebapp. Pokud je kontejner spuštěný, měl by se vedle názvu kontejneru zobrazit zelený symbol trojúhelníku.

A screenshot showing how to confirm a Docker container is running in Visual Studio Code.
Otestujte webovou aplikaci tak, že kliknete pravým tlačítkem na název kontejneru a vyberete Otevřít v prohlížeči.

Prohlížeč se otevře ve výchozím prohlížeči jako "http://127.0.0.1:8000" pro Django nebo "http://127.0.0.1:5000/" pro Flask.
A screenshot showing how to browse the endpoint of a Docker container in Visual Studio Code.
Zastavte kontejner.
  • V části KONTEJNERY rozšíření Docker najděte spuštěný kontejner.

  • Klikněte pravým tlačítkem na kontejner a vyberte Zastavit.

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

Tip

Kontejner můžete také spustit výběrem konfigurace spuštění nebo ladění. Úlohy rozšíření Dockeru v souboru tasks.json se volají při spuštění nebo ladění. Volaná úloha závisí na tom, jakou konfiguraci spuštění vyberete. Pro úlohu Docker: Python (místní MongoDB) zadejte <VAŠI-IP-ADRESU>. Pro úlohu Docker: Python (MongoDB Azure) zadejte <CONNECTION-STRING>.

Kontejner můžete také spustit z image a zastavit ho pomocí desktopové aplikace Dockeru .

Další krok