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 byste měli dokončit část 1 .
Následující diagram služby zvýrazňuje místní komponenty popsané v tomto článku. V tomto článku se také dozvíte, 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 vytvoříte 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 potřebujete 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 na Windows, je potřeba otevřít Docker Desktop, který spustí proces démon, než budete moct pokračovat.
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.Poznámka:
Ukázkové úložiště používá Python 3.8. Pokud vytváříte vlastní soubor Dockerfile, použijte podporovanou Python verzi, například 3.12 nebo 3.13. Informace o aktuálně podporovaných verzích najdete v tématu Python podpora verzí.
#!/bin/bash docker build --rm --pull \ --file "Dockerfile" \ --label "com.microsoft.created-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:
Můžete si také prohlédnout image, které sestavíte z editoru VS Code, nebo pomocí rozhraní příkazového řádku Dockeru přímo pomocí desktopové aplikace Dockeru .
Nastavení MongoDB
Webová aplikace Python k ukládání dat vyžaduje databázi MongoDB a kolekci 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 do proměnné prostředí připojovací řetězec k jedné z těchto instancí MongoDB. Tento připojovací řetězec si může prohlédnout každý, kdo může zkontrolovat váš kontejner – například pomocí docker inspect.
Místní MongoDB
Vytvořte místní instanci MongoDB pomocí Azure CLI.
Nainstalujte MongoDB , pokud ještě není nainstalovaný.
Pokud chcete zkontrolovat, jestli je nainstalovaný MongoDB, použijte MongoDB Shell (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.Poznámka:
Cesta ke konfiguračnímu souboru se liší podle verze operačního systému a MongoDB. V systému macOS vyhledejte
/usr/local/etc/mongod.confnebo/opt/homebrew/etc/mongod.conf. V Linuxu zkontrolujte/etc/mongod.conf.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 for MongoDB
Teď pomocí Azure CLI vytvořte instanci Azure Cosmos DB pro MongoDB.
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é). Stejnou skupinu prostředků použijte pro všechny prostředky Azure, které vytvoříte 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ýstupu posledního příkazu do schránky nebo na jiné místo.
{
"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 informace pro připojení k MongoDB budou předány pomocí proměnných prostředí. Existuje několik metod předávání proměnných prostředí do kontejneru místně. Každá metoda má výhody a nevýhody z hlediska zabezpečení. Vyhněte se ukládání nebo ponechávání citlivých informací v kódu v kontejneru.
Poznámka:
Když webovou aplikaci nasadíte do Azure, získá webová aplikace informace o připojení z hodnot prostředí nastavených jako nastavení konfigurace služby App Service. Žádný z úprav scénáře místního vývojového prostředí se nepoužije.
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" \ --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 lsV seznamu se zobrazí váš kontejner
msdocspythoncontainerwebapp:latest. Všimněte si sloupceNAMESvýstupu a sloupcePORTS. K zastavení kontejneru použijte název kontejneru.Otestujte webovou aplikaci.
Přejděte na
http://127.0.0.1:8000Django ahttp://127.0.0.1:5000/pro Flask.Vypněte kontejner.
docker container stop <container-name>
Azure Cosmos DB for 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:latestPro demonstrační účely ukazuje tento příklad předávání citlivých informací. Informace o připojovací řetězec můžete 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 a spuštěním následujícího příkazu docker container ls potvrďte, že kontejner běží.
docker container lsV seznamu se zobrazí váš kontejner
msdocspythoncontainerwebapp:latest. Všimněte si sloupceNAMESvýstupu a sloupcePORTS. K zastavení kontejneru použijte název kontejneru.Otestujte webovou aplikaci.
Přejděte na
http://127.0.0.1:8000Django ahttp://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 Docker.