Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Öğretici serisinin bu bölümünde, yerel bilgisayarınızda kapsayıcılı Django veya Flask Python web uygulaması oluşturmayı ve çalıştırmayı öğreneceksiniz. Bu uygulamanın verilerini depolamak için yerel mongoDB örneğini veya MongoDB için Azure Cosmos DB'yi kullanabilirsiniz. Bu makale, 5 bölümden oluşan bir öğretici serisinin 2. bölümüdür. Bu makaleye başlamadan önce 1. bölümü tamamlamanızı öneririz.
Aşağıdaki hizmet diyagramı, bu makalede ele alınan yerel bileşenleri vurgular. Bu makalede, MongdoDB için Azure Cosmos DB'yi MongoDB'nin yerel bir örneği yerine yerel bir Docker görüntüsüyle kullanmayı da öğreneceksiniz.
Örnek Python uygulamasını kopyalama veya indirme
Bu bölümde, Docker görüntüsü oluşturmak için kullandığınız örnek Python uygulamasını kopyalayabilir veya indirebilirsiniz. Django veya Flask Python web uygulaması arasında seçim yapabilirsiniz. Kendi Python web uygulamanız varsa, bunun yerine bunu kullanmayı seçebilirsiniz. Kendi Python web uygulamanızı kullanıyorsanız, uygulamanızın kök klasöründe bir Dockerfile olduğundan ve mongoDB veritabanına bağlanaabildiğinden emin olun.
Aşağıdaki komutlardan birini kullanarak Django veya Flask deposunu yerel bir klasöre kopyalayın:
Kopyalanan deponuzun kök klasörüne gidin.
Docker görüntüsü oluşturma
Bu bölümde, Visual Studio Code veya Azure CLI kullanarak Python web uygulaması için bir Docker görüntüsü oluşturacaksınız. Docker görüntüsü Python web uygulamasını, bağımlılıklarını ve Python çalışma zamanını içerir. Docker görüntüsü, görüntünün içeriğini ve davranışını tanımlayan bir Dockerfile'dan oluşturulur. Dockerfile, kopyaladığınız veya indirdiğiniz (veya kendiniz sağladığınız) örnek uygulamanın kök klasöründedir.
Tavsiye
Azure CLI'yı kullanmaya yeni başladıysanız Azure CLI'yi yerel olarak indirip yüklemeyi veya Azure Cloud Shell'de Azure CLI komutlarını çalıştırmayı öğrenmek için bkz. Azure CLI ile çalışmaya başlama.
Docker CLI kullanarak Docker görüntüsünü oluşturmak için Docker gereklidir. Docker yüklendikten sonra bir terminal penceresi açın ve örnek klasöre gidin.
Uyarı
Bu bölümdeki adımlar Docker daemon'unun çalışmasını gerektirir. Windows gibi bazı yüklemelerde devam etmeden önce daemon'ı başlatan Docker Desktop'ı açmanız gerekir.
Örnek uygulamanın kök klasöründe aşağıdaki komutu çalıştırarak Docker'ın erişilebilir olduğunu onaylayın.
docker
Bu komutu çalıştırdıktan sonra Docker CLI ile ilgili yardım görürseniz Docker erişilebilir durumdadır. Aksi takdirde, Docker'ın yüklü olduğundan ve kabuğunuza Docker CLI'ye erişim izni verdiğinizden emin olun.
Docker build komutunu kullanarak Python web uygulaması için Docker görüntüsünü oluşturun .
Komutun genel biçimi şeklindedir
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>"
.Projenin kök klasöründeyseniz Docker görüntüsünü oluşturmak için aşağıdaki komutu kullanın. Komutun sonundaki nokta (".") komutun çalıştırıldığı geçerli dizine başvurur. Yeniden derlemeye zorlamak için şunu ekleyin:
--no-cache
.#!/bin/bash docker build --rm --pull \ --file "Dockerfile" \ --label "com.microsoft.create-by=docker-cli" \ --tag "msdocspythoncontainerwebapp:latest" \ .
Docker images komutunu kullanarak görüntünün başarıyla oluşturulduğundan emin olun.
docker images
Komutu, diğer görüntü özellikleri arasında REPOSITORY adı, TAG ve CREATED tarihlerine göre görüntülerin listesini döndürür.
Bu noktada, "latest" etiketine sahip "msdocspythoncontainerwebapp" adlı yerel bir Docker görüntüye sahipsiniz. Etiketler sürüm ayrıntılarını, amaçlanan kullanımı, kararlılığı ve diğer ilgili bilgileri tanımlamaya yardımcı olur. Daha fazla bilgi için bkz . Kapsayıcı görüntülerini etiketleme ve sürüm oluşturma önerileri.
Uyarı
DOĞRUDAN VS Code'dan veya Docker CLI kullanılarak oluşturulan görüntüler Docker Desktop uygulamasıyla da görüntülenebilir.
MongoDB'i ayarlama
Python web uygulamanız için restaurants_reviews adlı bir MongoDB veritabanı ve verileri depolamak için restaurants_reviews adlı bir koleksiyon gerekir. Bu öğreticide, veritabanı ve koleksiyon oluşturmak ve bunlara erişmek için hem MongoDB'nin yerel yüklemesini hem de MongoDB için Azure Cosmos DB örneğini kullanacaksınız.
Önemli
Üretimde kullandığınız mongoDB veritabanını kullanmayın. Bu öğreticide, MongoDB bağlantı dizesini bu MongoDB örneklerinden birine bir ortam değişkeninde depolarsınız (kapsayıcınızı denetleyebilen herkes tarafından gözlemlenebilir ; örneğin kullanarak docker inspect
).
Yerel MongoDB
Azure CLI kullanarak mongoDB'nin yerel bir örneğini oluşturarak başlayalım.
MongoDB'yi yükleyin (henüz yüklü değilse).
MongoDB Kabuğunu (mongosh) kullanarak MongoDB yüklemesini de kontrol edebilirsiniz. Aşağıdaki komutlar işe yaramazsa mongosh'u açıkça yüklemeniz veya mongosh'u MongoDB sunucunuza bağlamanız gerekebilir.
MongoDB kabuğunu açmak ve hem MongoDB kabuğunun hem de MongoDB sunucusunun sürümünü almak için aşağıdaki komutu kullanın:
mongosh
Tavsiye
Sisteminizde yüklü mongoDB sunucusunun yalnızca sürümünü döndürmek için MongoDB kabuğunu kapatıp yeniden açın ve aşağıdaki komutu kullanın:
mongosh --quiet --exec 'db.version()'
Bazı kurulumlarda bash kabuğunuzda mongo daemon'unu doğrudan çağırabilirsiniz.
mongod --version
klasöründeki mongod.cfg dosyasını
\MongoDB\Server\8.0\bin
düzenleyin ve anahtarına bilgisayarınızınbindIP
yerel IP adresini ekleyin.bindip
MongoD yapılandırma dosyasındaki anahtar, MongoDB'nin istemci bağlantıları için dinlediğini konak adlarını ve IP adreslerini tanımlar. Yerel geliştirme bilgisayarınızın geçerli IP'sini ekleyin. Docker kapsayıcısında yerel olarak çalışan örnek Python web uygulaması bu adresle konak bilgisayara iletişim kurar.Örneğin, yapılandırma dosyasının bir bölümü şu şekilde görünmelidir:
net: port: 27017 bindIp: 127.0.0.1,<local-ip-address>
Değişikliklerinizi bu yapılandırma dosyasına kaydedin.
Önemli
Bu yapılandırma dosyasında yaptığınız değişiklikleri kaydetmek için yönetici ayrıcalıklarına sahip olmanız gerekir.
Yapılandırma dosyasındaki değişiklikleri almak için MongoDB'yi yeniden başlatın.
Bir MongoDB kabuğu açın ve aşağıdaki komutu çalıştırarak veritabanı adını "restaurants_reviews" ve koleksiyon adını "restaurants_reviews" olarak ayarlayın. VS Code MongoDB uzantısı veya mongoDB kullanan başka bir araçla da veritabanı ve koleksiyon oluşturabilirsiniz.
> help > use restaurants_reviews > db.restaurants_reviews.insertOne({}) > show dbs > exit
Önceki adımı tamamladıktan sonra yerel MongoDB bağlantı dizesi "mongodb://127.0.0.1:27017/", veritabanı adı "restaurants_reviews" ve koleksiyon adı "restaurants_reviews" olur.
MongoDB için Azure Cosmos DB
Şimdi De Azure CLI kullanarak MongoDB için Azure Cosmos DB örneği oluşturalım.
Uyarı
Bu öğretici serisinin 4. bölümünde, Web uygulamasını Azure App Service'te çalıştırmak için MongoDB için Azure Cosmos DB örneğini kullanırsınız.
Aşağıdaki betiği çalıştırmadan önce konumu, kaynak grubunu ve MongoDB için Azure Cosmos DB hesap adını uygun değerlerle değiştirin (isteğe bağlı). İşiniz bittiğinde bunların silinmesini kolaylaştırmak için bu öğreticide oluşturulan tüm Azure kaynakları için aynı kaynak grubunu kullanmanızı öneririz.
Komut dosyasının çalıştırılması birkaç dakika sürer.
#!/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"
Betik tamamlandığında, son komutun çıkışından Birincil MongoDB Bağlantı Dizesi'ni panonuza veya başka bir konuma kopyalayı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"
},
...
]
}
Önceki adımı tamamladıktan sonra MongoDB için Azure Cosmos DB bağlantı dizesi mongodb://<server-name>:<password>@<server-name>.mongo.cosmos.azure.com:10255/?ssl=true&<other-parameters>
, adlı bir veritabanı ve adlı restaurants_reviews
restaurants_reviews
bir koleksiyonunuz vardır.
Azure CLI kullanarak MongoDB hesabı için Cosmos DB oluşturma ve veritabanı ve koleksiyon oluşturma hakkında daha fazla bilgi için bkz. Azure CLI kullanarak Azure Cosmos DB için MongoDB için veritabanı ve koleksiyon oluşturma. PowerShell' i, VS Code Azure Veritabanları uzantısını ve Azure portalını da kullanabilirsiniz.
Tavsiye
VS Code Azure Veritabanları uzantısında MongoDB sunucusuna sağ tıklayıp bağlantı dizesini alabilirsiniz.
Görüntüyü bir kapsayıcıda yerel olarak çalıştırma
Artık yerel MongoDB örneğinizi veya MongoDB için Cosmos DB örneğinizi kullanarak Docker kapsayıcısını yerel olarak çalıştırmaya hazırsınız. Öğreticinin bu bölümünde, görüntüyü yerel olarak çalıştırmak için VS Code veya Azure CLI kullanmayı öğreneceksiniz. Örnek uygulama, ortam değişkenleriyle MongoDB bağlantı bilgilerinin ona geçirilmesini bekler. Ortam değişkenlerinin kapsayıcıya yerel olarak geçirilmesini sağlamanın çeşitli yolları vardır. Her birinin güvenlik açısından avantajları ve dezavantajları vardır. Herhangi bir hassas bilgiyi denetlemekten veya kapsayıcıdaki kodda hassas bilgileri bırakmaktan kaçınmanız gerekir.
Uyarı
Web uygulaması Azure'a dağıtıldığında, web uygulaması App Service yapılandırma ayarları olarak ayarlanan ortam değerlerinden bağlantı bilgilerini alır ve yerel geliştirme ortamı senaryosunda yapılan değişikliklerin hiçbiri geçerli değildir.
MongoDB yerel
Docker görüntüsünü yerel olarak çalıştırmak için yerel MongoDB örneğiniz ile aşağıdaki komutları kullanın.
Görüntünün en son sürümünü çalıştırın.
#!/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:latest
Konteynerin çalıştığını onaylayın. Başka bir konsol penceresinde docker container ls komutunu çalıştırın.
docker container ls
Listedeki "msdocspythoncontainerwebapp:latest:latest" kapsayıcınızı görün. Çıkışın
NAMES
sütununa vePORTS
sütununa dikkat edin. Kapsayıcıyı durdurmak için kapsayıcı adını kullanın.Web uygulamasını test edin.
"http://127.0.0.1:8000"'e gidin; Django ve "http://127.0.0.1:5000/"'e gidin; Flask için."
Kapsayıcıyı kapatın.
docker container stop <container-name>
MongoDB için Azure Cosmos DB
Docker görüntüsünü Azure'da çalıştırmak için MongoDB için Azure Cosmos DB örneğinizle aşağıdaki komutları kullanın.
Görüntünün en son sürümünü çalıştırın.
#!/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:latest
Hassas bilgilerin geçirilmesi yalnızca tanıtım amacıyla gösterilir. Bağlantı dizesi bilgileri , docker container inspect komutuyla kapsayıcı incelenerek görüntülenebilir. Gizli dizileri işlemenin bir diğer yolu da Docker'ın BuildKit işlevselliğini kullanmaktır.
Yeni bir konsol penceresi açın, kapsayıcının çalıştığını onaylamak için aşağıdaki docker container ls komutunu çalıştırın.
docker container ls
Listedeki "msdocspythoncontainerwebapp:latest:latest" kapsayıcınızı görün. Çıkışın
NAMES
sütununa vePORTS
sütununa dikkat edin. Kapsayıcıyı durdurmak için kapsayıcı adını kullanın.Web uygulamasını test edin.
"http://127.0.0.1:8000"'e gidin; Django ve "http://127.0.0.1:5000/"'e gidin; Flask için."
Kapsayıcıyı kapatın.
docker container stop <container-name>
Ayrıca bir görüntüden kapsayıcı başlatabilir ve Docker Desktop uygulamasıyla durdurabilirsiniz.