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. A cikk megkezdése előtt el kell végeznie az 1. részt .
Az alábbi szolgáltatásdiagram a cikkben tárgyalt helyi összetevőket emeli ki. Ebben a cikkben azt is megtudhatja, hogyan használhatja a MongoDB-hez készült Azure Cosmos DB helyi Docker-rendszerképekkel 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:
Nyissa 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épet egy Olyan Docker-fájlból hozhatja létre, 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.
Ha a Docker-rendszerképet a Docker parancssori felületével szeretné létrehozni, szüksége van a Dockerre. A Docker telepítése után nyisson meg egy terminálablakot, és nyissa meg a mintamappát.
Megjegyzés
A szakasz lépéseihez a Docker-démon futtatására van szükség. Egyes telepítésekben, például a Windows, meg kell nyitnia a Docker Desktopot, amely elindítja a démont, mielőtt továbbléphet.
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.Megjegyzés
A mintaadattár a Python 3.8-at használja. Ha saját Dockerfile-t hoz létre, használjon támogatott Python verziót, például a 3.12-es vagy a 3.13-as verziót. A jelenleg támogatott verziókról lásd a Python verziótámogatást.
#!/bin/bash docker build --rm --pull \ --file "Dockerfile" \ --label "com.microsoft.created-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 a Docker CLI-vel közvetlenül a Docker Desktop alkalmazással készített képeket is megtekintheti.
A MongoDB beállítása
A Python webalkalmazáshoz mongoDB-adatbázisra és 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 tárolja az egyik ilyen MongoDB-példányhoz tartozó MongoDB-kapcsolati karakterláncot egy környezeti változóban. Bárki, aki meg tudja vizsgálni a tárolóját – például a(z) docker inspect használatával –, láthatja ezt a kapcsolati karakterláncot.
Helyi MongoDB
Hozzon létre egy helyi MongoDB-példányt a Azure CLI használatával.
Ha még nincs telepítve, telepítse a MongoDB-t .
Annak ellenőrzéséhez, hogy a MongoDB telepítve van-e, használja a MongoDB Shellt (mongosh). Ha a következő parancsok nem működnek, előfordulhat, hogy explicit módon telepítenie kell a mongosh-t , vagy csatlakoztatnia kell a mongosh-t 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.Megjegyzés
A konfigurációs fájl elérési útja az operációs rendszertől és a MongoDB-verziótól függően változik. MacOS rendszeren keresse meg
/usr/local/etc/mongod.confvagy/opt/homebrew/etc/mongod.conf. Linux rendszeren ellenőrizze a/etc/mongod.conf.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 for MongoDB
Most hozzon létre egy Azure Cosmos DB a MongoDB-példányhoz a 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ő). Használja ugyanazt az erőforráscsoportot 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 ezen szakaszában megtanulhatja, hogyan használhatja a VS Code-ot vagy az Azure CLI-t a lemezkép helyi futtatásához. A mintaalkalmazás elvárja, hogy a MongoDB kapcsolati adatai környezeti változók használatával legyenek átadva. Számos módszer létezik a környezeti változók helyi tárolóba történő továbbítására. Minden módszernek vannak előnyei és hátrányai a biztonság szempontjából. Kerülje a bizalmas információk becsekkolását vagy benne hagyását a tárolóban lévő kódban.
Megjegyzés
Amikor telepíti a webalkalmazást az Azure-ba, a webalkalmazás az App Service-konfigurációs beállításként megadott környezeti változók értékeiből szerzi be a csatlakozási adatokat. A helyi fejlesztési környezethez tartozó módosítások egyike 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" \ --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 lsA konténer
msdocspythoncontainerwebapp:latestmegjelenik Ön előtt a listában. Figyelje meg aNAMESoszlop és aPORTSoszlop kimenetét. Használja a konténer nevét a konténer leállításához.Tesztelje a webalkalmazást.
A Django esetében keresse fel a
http://127.0.0.1:8000oldalt, a Flask esetében pedig ahttp://127.0.0.1:5000/oldalt.Állítsa le a tárolót.
docker container stop <container-name>
Azure Cosmos DB for MongoDB
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:latestBemutató célokra ez a példa bizalmas információk átadását mutatja be. A kapcsolati karakterlánc információkat a tároló vizsgálatával tekintheti meg a docker container inspect paranccsal. 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 lsA konténer
msdocspythoncontainerwebapp:latestmegjelenik Ön előtt a listában. Figyelje meg aNAMESoszlop és aPORTSoszlop kimenetét. Használja a konténer nevét a konténer leállításához.Tesztelje a webalkalmazást.
A Django esetében keresse fel a
http://127.0.0.1:8000oldalt, a Flask esetében pedig ahttp://127.0.0.1:5000/oldalt.Állítsa le a tárolót.
docker container stop <container-name>
Egy tárolót egy rendszerképből is elindíthat, és a Docker Desktop alkalmazással állíthatja le.