Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az oktatóanyag-sorozat jelen részében megtudhatja, hogyan hozhat létre és futtathat tárolóalapú Django - vagy Flask Python-webalkalmazást a helyi számítógépen. Az alkalmazás adatainak tárolásához használhat helyi MongoDB-példányt vagy a MongoDB-hez készült Azure Cosmos DB-t. Ez a cikk egy 5 részes oktatóanyag-sorozat 2. része. Javasoljuk, hogy a cikk megkezdése előtt végezze el az 1. részt .
Az alábbi szolgáltatásdiagram a cikkben tárgyalt helyi összetevőket emeli ki. Ebből a cikkből megtudhatja azt is, hogyan használhatja az Azure Cosmos DB for MongdoDB-t helyi Docker-rendszerképpel a MongoDB helyi példánya helyett.
A Python-mintaalkalmazás klónozása vagy letöltése
Ebben a szakaszban klónozza vagy letölti a Docker-rendszerkép létrehozásához használt Python-mintaalkalmazást. Django- vagy Flask Python-webalkalmazások közül választhat. Ha saját Python-webalkalmazással rendelkezik, ezt használhatja. Ha saját Python-webalkalmazást használ, győződjön meg arról, hogy az alkalmazás rendelkezik dockerfile-val a gyökérmappában, és csatlakozhat mongoDB-adatbázishoz.
Klónozza a Django- vagy Flask-adattárat egy helyi mappába az alábbi parancsok egyikével:
Keresse meg a klónozott adattár gyökérmappáját.
Docker-rendszerkép létrehozása
Ebben a szakaszban egy Docker-rendszerképet hoz létre a Python-webalkalmazáshoz a Visual Studio Code vagy az Azure CLI használatával. A Docker-rendszerkép tartalmazza a Python-webalkalmazást, annak függőségeit és a Python-futtatókörnyezetet. A Docker-rendszerkép egy Docker-fájlból épül fel, amely meghatározza a rendszerkép tartalmát és viselkedését. A Dockerfile a klónozott vagy letöltött mintaalkalmazás gyökérmappájában található (vagy saját maga adta meg).
Jótanács
Ha most ismerkedik az Azure CLI-vel, olvassa el az Azure CLI használatának első lépéseit , amelyből megtudhatja, hogyan töltheti le és telepítheti helyileg az Azure CLI-t, vagy hogyan futtathat Azure CLI-parancsokat az Azure Cloud Shellben.
A Docker szükséges a Docker-kép létrehozásához, a Docker CLI használatával. A Docker telepítése után nyisson meg egy terminálablakot, és keresse meg a mintamappát.
Megjegyzés
A szakasz lépéseihez a Docker-démon futtatására van szükség. Bizonyos telepítésekben, például Windows rendszeren, a folytatás előtt meg kell nyitnia a Docker Desktopot, amely elindítja a démont.
Ellenőrizze, hogy a Docker elérhető-e, ha a mintaalkalmazás gyökérmappájában futtatja az alábbi parancsot.
dockerHa a parancs futtatása után megjelenik a Docker parancssori felületének súgója, a Docker elérhető. Ellenkező esetben győződjön meg arról, hogy a Docker telepítve van, és hogy a parancssor hozzáfér a Docker CLI-hez.
Hozza létre a Python-webalkalmazás Docker-rendszerképét a Docker buildelési parancsával.
A parancs általános formája a következő
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>": .Ha a projekt gyökérmappájában van, használja az alábbi parancsot a Docker kép létrehozásához. A parancs végén található pont (".") arra az aktuális könyvtárra utal, amelyben a parancs fut. Az újraépítés kényszerítéséhez adja hozzá a elemet
--no-cache.#!/bin/bash docker build --rm --pull \ --file "Dockerfile" \ --label "com.microsoft.create-by=docker-cli" \ --tag "msdocspythoncontainerwebapp:latest" \ .Ellenőrizze, hogy a rendszerkép sikeresen elkészült-e a Docker-rendszerképek paranccsal.
docker imagesA parancs visszaadja a képek listáját a REPOSITORY neve, a TAG, a CREATED dátum és egyéb képtulajdonságok alapján.
Ezen a ponton van egy helyi Docker-rendszerképe "msdocspythoncontainerwebapp" néven, a "latest" címkével. A címkék segítenek meghatározni a verzió részleteit, a tervezett használatot, a stabilitást és az egyéb releváns információkat. További információkért tekintse meg a tárolólemezképek címkézésére és verziószámozására vonatkozó javaslatokat.
Megjegyzés
A VS Code-ból vagy közvetlenül a Docker CLI használatával készült képek a Docker Desktop alkalmazással is megtekinthetők.
A MongoDB beállítása
A Python-webalkalmazáshoz egy restaurants_reviews nevű MongoDB-adatbázisra van szükség, és egy restaurants_reviews nevű gyűjteményre van szükség az adatok tárolásához. Ebben az oktatóanyagban a MongoDB helyi telepítését és egy MongoDB-példányhoz készült Azure Cosmos DB-példányt is használ az adatbázis és a gyűjtemény létrehozásához és eléréséhez.
Fontos
Ne használjon olyan MongoDB-adatbázist, amelyet éles környezetben is használnak. Ebben az oktatóanyagban a MongoDB kapcsolati sztringet egy környezeti változóban tárolja ezen MongoDB-példányok egyikéhez (amelyet bárki megfigyelhet, aki képes megvizsgálni a tárolót – például a használatával docker inspect).
Helyi MongoDB
Először hozzunk létre egy helyi MongoDB-példányt az Azure CLI használatával.
Telepítse a MongoDB-t (ha még nincs telepítve).
A MongoDB telepítését a MongoDB Shell (mongosh) használatával ellenőrizheti. Ha a következő parancsok nem működnek, előfordulhat, hogy explicit módon telepítenie kell a mongosh-t , vagy csatlakoznia kell a mongosh-hoz a MongoDB-kiszolgálóhoz.
Az alábbi paranccsal nyissa meg a MongoDB-rendszerhéjat, és szerezze be a MongoDB-rendszerhéj és a MongoDB-kiszolgáló verzióját:
mongoshJótanács
Ha csak a rendszeren telepített MongoDB-kiszolgáló verzióját szeretné visszaadni, zárja be és nyissa meg újra a MongoDB-rendszerhéjat, és használja a következő parancsot:
mongosh --quiet --exec 'db.version()'Egyes beállításokban közvetlenül is meghívhatja a Mongo démont a bash-rendszerhéjban.
mongod --version
Szerkessze a mongod.cfg fájlt a
\MongoDB\Server\8.0\binmappában, és adja hozzá a számítógép helyi IP-címét abindIPkulcshoz.A
bindipMongoD konfigurációs fájlban található kulcs határozza meg azokat a gazdagépneveket és IP-címeket, amelyeket a MongoDB figyel az ügyfélkapcsolatok esetében. Adja hozzá a helyi fejlesztési számítógép aktuális IP-címét. A Docker-tárolóban helyileg futó Python-minta webalkalmazás ezzel a címmel kommunikál a gazdaszámítógéppel.A konfigurációs fájl egy részének például így kell kinéznie:
net: port: 27017 bindIp: 127.0.0.1,<local-ip-address>Mentse a konfigurációs fájl módosításait.
Fontos
A konfigurációs fájl módosításainak mentéséhez rendszergazdai jogosultságokra van szüksége.
Indítsa újra a MongoDB-t a konfigurációs fájl módosításainak felvételéhez.
Nyisson meg egy MongoDB parancssort, és futtassa a következő parancsot az adatbázis és a gyűjtemény nevének "restaurants_reviews" beállításához. Létrehozhat adatbázist és gyűjteményt a VS Code MongoDB bővítményével vagy bármely más MongoDB-képes eszközzel is.
> help > use restaurants_reviews > db.restaurants_reviews.insertOne({}) > show dbs > exit
Az előző lépés elvégzése után a helyi MongoDB kapcsolat sztringje "mongodb://127.0.0.1:27017/", az adatbázis neve "restaurants_reviews", a gyűjtemény neve pedig "restaurants_reviews".
Azure Cosmos DB a MongoDB-hez
Most hozzunk létre egy Azure Cosmos DB-t MongoDB-példányhoz az Azure CLI használatával.
Megjegyzés
Az oktatóanyag-sorozat 4. részében az Azure Cosmos DB for MongoDB-példány használatával futtathatja a webalkalmazást az Azure App Service-ben.
A következő szkript futtatása előtt cserélje le a helyet, az erőforráscsoportot és az Azure Cosmos DB for MongoDB-fiók nevét a megfelelő értékekre (nem kötelező). Javasoljuk, hogy ugyanazt az erőforráscsoportot használja az oktatóanyagban létrehozott összes Azure-erőforráshoz, hogy könnyebben törölhesse őket, ha végzett.
A szkript futtatása néhány percet vesz igénybe.
#!/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"
Amikor a szkript befejeződött, másolja az elsődleges MongoDB kapcsolati sztringet az utolsó parancs kimenetéből a vágólapra vagy más helyre.
{
"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"
},
...
]
}
Az előző lépés elvégzése után egy mongodb://<server-name>:<password>@<server-name>.mongo.cosmos.azure.com:10255/?ssl=true&<other-parameters> formájú Azure Cosmos DB for MongoDB kapcsolati sztringgel, egy restaurants_reviews nevű adatbázissal és egy restaurants_reviews nevű gyűjteménnyel rendelkezik.
Ha többet szeretne tudni arról, hogyan hozhat létre Cosmos DB-t MongoDB-fiókhoz az Azure CLI használatával, valamint hogyan hozhat létre adatbázisokat és gyűjteményeket, olvassa el az Azure Cosmos DB-hez készült MongoDB-adatbázis és -gyűjtemény létrehozása az Azure CLI használatával című témakört. Használhatja a PowerShellt, a VS Code Azure Databases bővítményt és az Azure Portalt is.
Jótanács
A VS Code Azure Databases bővítményében kattintson a jobb gombbal a MongoDB-kiszolgálóra, és kérje le a kapcsolati sztringet.
A rendszerkép helyi futtatása egy tárolóban
Most már készen áll a Docker-tároló helyi futtatására a helyi MongoDB-példány vagy a Cosmos DB for MongoDB-példány használatával. Az oktatóanyag jelen szakaszában megtanulhatja, hogy a VS Code vagy az Azure CLI használatával helyileg futtathatja a rendszerképet. A mintaalkalmazás megköveteli, hogy a MongoDB kapcsolati adatait környezeti változókkal adják át neki. A környezeti változók konténerhez való helyi átadásának több módja is van. Mindegyiknek vannak előnyei és hátrányai a biztonság szempontjából. Kerülje a bizalmas információk ellenőrzését vagy azok kódba való beillesztését a tárolóban.
Megjegyzés
Amikor a webalkalmazás üzembe van helyezve az Azure-ban, a webalkalmazás lekéri a kapcsolati adatokat az App Service konfigurációs beállításaiként beállított környezeti értékekből, és a helyi fejlesztési környezetre vonatkozó egyik módosítás sem érvényes.
MongoDB helyi
A Docker-rendszerkép helyi futtatásához használja az alábbi parancsokat a MongoDB helyi példányával.
Futtassa a kép legújabb verzióját.
#!/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:latestEllenőrizze, hogy működik-e a tároló. Egy másik konzolablakban futtassa a docker container ls parancsot.
docker container lsTekintse meg az "msdocspythoncontainerwebapp:latest:latest" tárolót a listán. Figyelje meg a
NAMESoszlop és aPORTSoszlop kimenetét. Használja a konténer nevét a konténer leállításához.Tesztelje a webalkalmazást.
Lépjen a "http://127.0.0.1:8000""-ra Djangohoz és "http://127.0.0.1:5000/""-ra Flaskhoz.
Állítsa le a tárolót.
docker container stop <container-name>
Azure Cosmos DB a MongoDB-hez
A Docker-rendszerkép azure-beli futtatásához használja az alábbi parancsokat az Azure Cosmos DB for MongoDB-példányával.
Futtassa a kép legújabb verzióját.
#!/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:latestA bizalmas információk átadása csak bemutató célokra jelenik meg. A kapcsolati sztring információi a konténert a docker container inspect parancs segítségével vizsgálva tekinthetők meg. A titkos kódok kezelésének másik módja a Docker BuildKit funkciójának használata.
Nyisson meg egy új konzolablakot, és futtassa a következő Docker-tároló ls parancsát annak ellenőrzéséhez, hogy a tároló fut-e.
docker container lsTekintse meg az "msdocspythoncontainerwebapp:latest:latest" tárolót a listán. Figyelje meg a
NAMESoszlop és aPORTSoszlop kimenetét. Használja a konténer nevét a konténer leállításához.Tesztelje a webalkalmazást.
Lépjen a "http://127.0.0.1:8000""-ra Djangohoz és "http://127.0.0.1:5000/""-ra Flaskhoz.
Állítsa le a tárolót.
docker container stop <container-name>
A tárolót a rendszerképből is elindíthatja, és leállíthatja a Docker Desktop alkalmazással.