Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V této části série kurzů se dozvíte, jak sestavit a spustit kontejnerizovanou webovou aplikaci Django nebo Flask Python na místním počítači. K ukládání dat pro tuto aplikaci můžete použít místní instanci MongoDB nebo Azure Cosmos DB pro MongoDB. Tento článek je 2. částí 5dílné série kurzů. Před zahájením tohoto článku doporučujeme dokončit část 1 .
Následující diagram služby zvýrazňuje místní komponenty popsané v tomto článku. Dozvíte se také, jak používat Azure Cosmos DB pro MongoDB s místní imagí Dockeru místo místní instance MongoDB.
Klonování nebo stažení ukázkové aplikace v Pythonu
V této části naklonujete nebo stáhnete ukázkovou aplikaci v Pythonu, kterou používáte k sestavení image Dockeru. Můžete si vybrat mezi webovou aplikací Django nebo Flask Python. Pokud máte vlastní webovou aplikaci v Pythonu, můžete ji použít. Pokud používáte vlastní webovou aplikaci v Pythonu, ujistěte se, že má vaše aplikace v kořenové složce soubor Dockerfile a může se připojit k databázi MongoDB.
Naklonujte úložiště Django nebo Flask do místní složky pomocí jednoho z následujících příkazů:
Přejděte do kořenové složky pro klonované úložiště.
Vytvořit Docker image
V této části vytvoříte image Dockeru pro webovou aplikaci Python pomocí editoru Visual Studio Code nebo Azure CLI. Image Dockeru obsahuje webovou aplikaci Python, její závislosti a modul runtime Pythonu. Image Dockeru je sestavená ze souboru Dockerfile , který definuje obsah a chování image. Soubor Dockerfile je v kořenové složce ukázkové aplikace, kterou jste naklonovali nebo stáhli (nebo jste sami zadali).
Návod
Pokud s Azure CLI začínáte, přečtěte si téma Začínáme s Azure CLI a zjistěte, jak stáhnout a nainstalovat Azure CLI místně nebo jak spouštět příkazy Azure CLI v Azure Cloud Shellu.
K sestavení image Dockeru pomocí rozhraní příkazového řádku Dockeru se vyžaduje Docker. Po instalaci Dockeru otevřete okno terminálu a přejděte do ukázkové složky.
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.
Spuštěním následujícího příkazu v kořenové složce ukázkové aplikace ověřte, že je Docker přístupný.
dockerPokud po spuštění tohoto příkazu uvidíte nápovědu k rozhraní příkazového řádku Dockeru, bude Docker přístupný. V opačném případě se ujistěte, že je Docker nainstalovaný a že vaše prostředí má přístup k rozhraní příkazového řádku Dockeru.
Pomocí příkazu Sestavení Dockeru sestavte image Dockeru pro webovou aplikaci Python.
Obecná forma příkazu je
docker build --rm --pull --file "<path-to-project-root>/Dockerfile" --label "com.microsoft.created-by=docker-cli" --tag "<container-name>:latest" "<path-to-project-root>".Pokud jste v kořenové složce projektu, pomocí následujícího příkazu sestavte image Dockeru. Tečka (".") na konci příkazu odkazuje na aktuální adresář, ve kterém se příkaz spouští. Chcete-li vynutit opětovné sestavení, přidejte
--no-cache.#!/bin/bash docker build --rm --pull \ --file "Dockerfile" \ --label "com.microsoft.create-by=docker-cli" \ --tag "msdocspythoncontainerwebapp:latest" \ .Pomocí příkazu Image Dockeru ověřte, že se image úspěšně vytvořila.
docker imagesPříkaz vrátí seznam obrázků podle názvu úložiště, tagu a data vytvoření a dalších charakteristik obrázku.
V tuto chvíli máte místní image Dockeru s názvem "msdocspythoncontainerwebapp" se značkou "latest". Značky pomáhají definovat podrobnosti o verzi, zamýšlené použití, stabilitu a další relevantní informace. Další informace najdete v tématu Doporučení pro označování a správu verzí imagí kontejnerů.
Poznámka:
Image vytvořené z editoru VS Code nebo přímo pomocí rozhraní příkazového řádku Dockeru je možné zobrazit také pomocí desktopové aplikace Dockeru .
Nastavení MongoDB
Webová aplikace v Pythonu vyžaduje databázi MongoDB s názvem restaurants_reviews a k ukládání dat se vyžaduje kolekce s názvem restaurants_reviews . V tomto kurzu použijete místní instalaci MongoDB i instanci 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 používáte v produkčním prostředí. V tomto kurzu uložíte připojovací řetězec MongoDB do jedné z těchto instancí MongoDB v proměnné prostředí (která je pozorovatelná kýmkoli, kdo může zkontrolovat váš kontejner – například pomocí docker inspect).
Místní MongoDB
Začněme vytvořením místní instance MongoDB pomocí Azure CLI.
Nainstalujte MongoDB (pokud ještě není nainstalovaný).
Instalaci MongoDB můžete zkontrolovat pomocí prostředí MongoDB (mongosh). Pokud následující příkazy nefungují, možná budete muset explicitně nainstalovat mongosh nebo připojit mongosh k serveru MongoDB.
Pomocí následujícího příkazu otevřete prostředí MongoDB a získejte verzi prostředí MongoDB i serveru MongoDB:
mongoshNávod
Pokud chcete vrátit jenom verzi serveru MongoDB nainstalovanou v systému, zavřete a znovu otevřete prostředí MongoDB a použijte následující příkaz:
mongosh --quiet --exec 'db.version()'V některých nastaveních můžete také přímo vyvolat démon Mongo v prostředí Bash.
mongod --version
Upravte soubor mongod.cfg ve
\MongoDB\Server\8.0\binsložce a přidejte dobindIPklíče místní IP adresu počítače.Klíč
bindipv konfiguračním souboru MongoD 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á webová aplikace Python spuštěná místně v kontejneru Dockeru komunikuje 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>Uložte změny tohoto konfiguračního souboru.
Důležité
K uložení změn provedených v tomto konfiguračním souboru potřebujete oprávnění správce.
Restartujte MongoDB a vyzvedněte změny konfiguračního souboru.
Otevřete prostředí MongoDB a spuštěním následujícího příkazu nastavte název databáze na restaurants_reviews a název kolekce na restaurants_reviews. Můžete také vytvořit databázi a kolekci s rozšířením MongoDB VS Code nebo jakýmkoli jiným nástrojem s podporou MongoDB.
> help > use restaurants_reviews > db.restaurants_reviews.insertOne({}) > show dbs > exit
Po dokončení předchozího kroku 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".
Azure Cosmos DB pro MongoDB
Teď také vytvoříme instanci Azure Cosmos DB pro MongoDB pomocí Azure CLI.
Poznámka:
Ve 4. části této série kurzů použijete instanci Azure Cosmos DB for MongoDB ke spuštění webové aplikace ve službě Azure App Service.
Před spuštěním následujícího skriptu nahraďte umístění, skupinu prostředků a název účtu Azure Cosmos DB pro MongoDB příslušnými hodnotami (volitelné). Doporučujeme použít stejnou skupinu prostředků pro všechny prostředky Azure vytvořené v tomto kurzu, abyste je po dokončení usnadnili odstranění.
Spuštění skriptu trvá několik minut.
#!/bin/bash
# LOCATION: The Azure region. Use the "az account list-locations -o table" command to find a region near you.
LOCATION='westus'
# RESOURCE_GROUP_NAME: The resource group name, which can contain underscores, hyphens, periods, parenthesis, letters, and numbers.
RESOURCE_GROUP_NAME='msdocs-web-app-rg'
# ACCOUNT_NAME: The Azure Cosmos DB for MongDB account name, which can contain lowercase letters, hyphens, and numbers.
ACCOUNT_NAME='msdocs-cosmos-db-account-name'
# Create a resource group
echo "Creating resource group $RESOURCE_GROUP_NAME in $LOCATION..."
az group create --name $RESOURCE_GROUP_NAME --location $LOCATION
# Create a Cosmos account for MongoDB API
echo "Creating $ACCOUNT_NAME. This command may take a while to complete."
az cosmosdb create --name $ACCOUNT_NAME --resource-group $RESOURCE_GROUP_NAME --kind MongoDB
# Create a MongoDB API database
echo "Creating database restaurants_reviews"
az cosmosdb mongodb database create --account-name $ACCOUNT_NAME --resource-group $RESOURCE_GROUP_NAME --name restaurants_reviews
# Create a MongoDB API collection
echo "Creating collection restaurants_reviews"
az cosmosdb mongodb collection create --account-name $ACCOUNT_NAME --resource-group $RESOURCE_GROUP_NAME --database-name restaurants_reviews --name restaurants_reviews
# Get the connection string for the MongoDB database
echo "Get the connection string for the MongoDB account"
az cosmosdb keys list --name $ACCOUNT_NAME --resource-group $RESOURCE_GROUP_NAME --type connection-strings
echo "Copy the Primary MongoDB Connection String from the list above"
Po dokončení skriptu zkopírujte Primární připojovací řetězec MongoDB z výsledku posledního příkazu do schránky nebo do jiného umístění.
{
"connectionStrings": [
{
"connectionString": ""mongodb://msdocs-cosmos-db:pnaMGVtGIRAZHUjsg4GJBCZMBJ0trV4eg2IcZf1TqV...5oONz0WX14Ph0Ha5IeYACDbuVrBPA==@msdocs-cosmos-db.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@msdocs-cosmos-db@"",
"description": "Primary MongoDB Connection String",
"keyKind": "Primary",
"type": "MongoDB"
},
...
]
}
Po dokončení předchozího kroku budete mít připojovací řetězec formuláře mongodb://<server-name>:<password>@<server-name>.mongo.cosmos.azure.com:10255/?ssl=true&<other-parameters>Azure Cosmos DB for MongoDB, databázi s názvem restaurants_reviewsa kolekci s názvem restaurants_reviews.
Další informace o tom, jak pomocí Azure CLI vytvořit účet Cosmos DB pro MongoDB a vytvářet databáze a kolekce, najdete v tématu Vytvoření databáze a kolekce pro MongoDB pro Azure Cosmos DB pomocí Azure CLI. Můžete také použít PowerShell, rozšíření VS Code Azure Databases a Azure Portal.
Návod
V rozšíření VS Code Azure Databases můžete kliknout pravým tlačítkem na server MongoDB a získat připojovací řetězec.
Spusťte image lokálně v kontejneru
Teď jste připraveni spustit kontejner Dockeru místně pomocí místní instance MongoDB nebo instance Cosmos DB pro MongoDB. V této části kurzu se naučíte používat VS Code nebo Azure CLI ke spuštění image místně. Ukázková aplikace očekává, že se do ní předají informace o připojení MongoDB pomocí proměnných prostředí. Existuje několik způsobů, jak lokálně získat proměnné prostředí předané do kontejneru. Každá z nich má výhody a nevýhody z hlediska zabezpečení. Měli byste se vyhnout uložení citlivých informací nebo ponechávání citlivých informací v kódu uvnitř kontejneru.
Poznámka:
Když se webová aplikace nasadí do Azure, získá webová aplikace informace o připojení z hodnot prostředí nastavených jako nastavení konfigurace služby App Service a nepoužije se žádná úprava scénáře místního vývojového prostředí.
Místní MongoDB
K místnímu spuštění image Dockeru použijte následující příkazy s místní instancí MongoDB.
Spusťte nejnovější verzi obrazu.
#!/bin/bash # Define variables # Set the port number based on the framework being used: # 8000 for Django, 5000 for Flask export PORT=<port-number> # Replace with actual port (e.g., 8000 or 5000) # Set your computer''s IP address (replace with actual IP) export YOUR_IP_ADDRESS=<your-computer-ip-address> # Replace with actual IP address # Run the Docker container with the required environment variables docker run --rm -it \ --publish "$PORT:$PORT" \ --publish 27017:27017 \ --add-host "mongoservice:$YOUR_IP_ADDRESS" \ --env CONNECTION_STRING=mongodb://mongoservice:27017 \ --env DB_NAME=restaurants_reviews \ --env COLLECTION_NAME=restaurants_reviews \ --env SECRET_KEY="supersecretkeythatispassedtopythonapp" \ msdocspythoncontainerwebapp:latestOvěřte, že je kontejner spuštěný. V jiném okně konzoly spusťte příkaz docker container ls .
docker container lsNajděte svůj kontejner "msdocspythoncontainerwebapp:latest:latest" v seznamu. Všimněte si sloupce
NAMESvýstupu a sloupcePORTS. K zastavení kontejneru použijte název kontejneru.Otestujte webovou aplikaci.
Přejděte na "http://127.0.0.1:8000" pro Django a "http://127.0.0.1:5000/" pro Flask.
Vypněte kontejner.
docker container stop <container-name>
Azure Cosmos DB pro MongoDB
Ke spuštění image Dockeru v Azure použijte následující příkazy s instancí Azure Cosmos DB for MongoDB.
Spusťte nejnovější verzi obrazu.
#!/bin/bash # PORT=8000 for Django and 5000 for Flask export PORT=<port-number> export CONNECTION_STRING="<connection-string>" docker run --rm -it \ --publish $PORT:$PORT/tcp \ --env CONNECTION_STRING=$CONNECTION_STRING \ --env DB_NAME=restaurants_reviews \ --env COLLECTION_NAME=restaurants_reviews \ --env SECRET_KEY=supersecretkeythatyougenerate \ msdocspythoncontainerwebapp:latestPředávání citlivých informací se uvádí jen pro demonstrační účely. Informace o připojovacím řetězci je možné zobrazit kontrolou kontejneru pomocí příkazu docker container inspect. Dalším způsobem zpracování tajných kódů je použití funkce BuildKitu Dockeru.
Otevřete nové okno konzoly, spuštěním následujícího příkazu docker container ls potvrďte, že kontejner běží.
docker container lsNajděte svůj kontejner "msdocspythoncontainerwebapp:latest:latest" v seznamu. Všimněte si sloupce
NAMESvýstupu a sloupcePORTS. K zastavení kontejneru použijte název kontejneru.Otestujte webovou aplikaci.
Přejděte na "http://127.0.0.1:8000" pro Django a "http://127.0.0.1:5000/" pro Flask.
Vypněte kontejner.
docker container stop <container-name>
Kontejner můžete také spustit z image a zastavit ho pomocí desktopové aplikace Dockeru .