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.
Bu makale, Azure Container Apps
Bu öğreticide yapacaklarınız:
- Bulutta bir kapsayıcı görüntüsü oluşturarak Python örnek web uygulamasını (Django veya Flask) kapsayıcıya alın.
- Kapsayıcı görüntüsünü Azure Container Apps'e dağıtın.
- Kapsayıcı uygulamasının, örnek uygulamanın verileri depoladığı PostgreSQL için Azure Veritabanı - Esnek Sunucu örneğine bağlanmasını sağlayan ortam değişkenlerini tanımlayın.
Aşağıdaki diyagramda bu kılavuzdaki görevler vurgulanır: kapsayıcı imajı oluşturma ve dağıtma.
Önkoşullar
Azure aboneliğiniz yoksa başlamadan önce ücretsiz hesap oluşturun.
Azure CLI komutlarını Azure Cloud Shell veya Azure CLI yüklü bir iş istasyonunda çalıştırabilirsiniz.
Yerel olarak çalıştırıyorsanız oturum açmak ve bu öğretici için gerekli modülleri yüklemek için şu adımları izleyin:
Azure'da oturum açın ve gerekirse kimlik doğrulaması yapın.
az loginAzure CLI'nın en son sürümünü çalıştırdığınızdan emin olun:
az upgradecontainerapp yükleyin veya yükseltin veaz extension add komutunu kullanarak Azure CLI uzantılarını rdbms-connect: az extension add --name containerapp --upgrade az extension add --name rdbms-connect --upgradeNot
Sisteminizde yüklü uzantıları listelemek için az extension list komutunu kullanabilirsiniz. Mesela:
az extension list --query [].name --output tsv
Örnek uygulamayı alma
Örnek kodu çatallayın ve geliştirici ortamınıza kopyalayın:
Örnek uygulamanın (Django veya Flask) GitHub deposuna gidin ve Çatal'ı seçin.
Depoyu GitHub hesabınıza fork etmek için adımları izleyin. Kod deposunu fork işlemi yapmadan veya bir GitHub hesabı kullanmadan doğrudan yerel makinenize indirebilirsiniz. Ancak indirme yöntemini kullanırsanız, bu serinin sonraki dersinde sürekli tümleştirme ve sürekli teslim (CI/CD) yapılandırmasını yapamazsınız.
Konsolunuzda komut isteminde git clone komutunu kullanarak çatallanmış depoyu python-container klasörüne kopyalayın:
# Django git clone https://github.com/<github-username>/msdocs-python-django-azure-container-apps.git python-container # Flask # git clone https://github.com/<github-username>/msdocs-python-flask-azure-container-apps.git python-containerDizini değiştirin:
cd python-container
Web uygulaması kodundan kapsayıcı görüntüsü oluşturma
Bu adımları izledikten sonra, örnek koddan oluşturulmuş bir Docker kapsayıcı görüntüsü içeren bir Azure Container Registry örneğiniz olur.
Windows bilgisayarda Git Bash kabuğunda komut çalıştırıyorsanız devam etmeden önce aşağıdaki komutu girin:
#!/bin/bash export MSYS_NO_PATHCONV=1az group create komutunu kullanarak bir kaynak grubu oluşturun:
#!/bin/bash RESOURCE_GROUP_NAME=<resource-group-name> LOCATION=<location> az group create \ --name $RESOURCE_GROUP_NAME \ --location $LOCATIONaz acr create komutunu kullanarak kapsayıcı kayıt defteri oluşturun:
#!/bin/bash REGISTRY_NAME=<registry-name> #The name that you use for *\<registry-name>* must be unique within Azure, and it must contain 5 to 50 alphanumeric characters. az acr create \ --resource-group $RESOURCE_GROUP_NAME \ --name $REGISTRY_NAME \ --sku Basic \ --admin-enabled trueaz acr login komutunu kullanarak kayıt defterinde oturum açın:
az acr login --name $REGISTRY_NAMEKomutu, tam kayıt defteri adını oluşturmak için ada "azurecr.io" ekler. Oturum açma işlemi başarılı olursa "Oturum Açma Başarılı" iletisi görüntülenir. Kayıt defterine, kayıt defterini oluşturduğunuz abonelikten farklı bir abonelikten erişiyorsanız,
--suffixanahtarını kullanın.Oturum açma başarısız olursa Docker daemon'unun sisteminizde çalıştığından emin olun.
az acr build komutunu kullanarak görüntüyü derleyin:
#!/bin/bash az acr build \ --registry $REGISTRY_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --image pythoncontainer:latest .Dikkat edilmesi gerekenler şunlardır:
Komutun sonundaki nokta (
.), derlenecek kaynak kodun konumunu gösterir. Bu komutu örnek uygulamanın kök dizininde çalıştırmıyorsanız kodun yolunu belirtin.Azure Cloud Shell'de komutunu çalıştırıyorsanız, önce depoyu Cloud Shell ortamına çekmek için
git clonekullanın. Ardından noktanın (.) doğru yorumlanabilmesi için proje kök dizinine geçin.(ile
--imageaynı) seçeneğini bırakırsanız-t, komut yerel bağlam derlemesini kayıt defterine göndermeden kuyruğa alır. Göndermeden derlemek, görüntünün derlendiğini denetlemek için yararlı olabilir.
kapsayıcı görüntüsünün az acr repository list komutu kullanılarak oluşturulduğunu onaylayın:
az acr repository list --name $REGISTRY_NAME
Not
Bu bölümdeki adımlar, Temel hizmet katmanında bir kapsayıcı kayıt defteri oluşturur. Bu katman, geliştirici senaryoları için hedeflenen bir özellik kümesi ve aktarım hızıyla maliyet açısından iyileştirilmiştir ve bu öğreticinin gereksinimlerine uygundur. Üretim senaryolarında büyük olasılıkla Standart veya Premium hizmet katmanını kullanırsınız. Bu katmanlar, gelişmiş depolama ve aktarım hızı düzeyleri sağlar.
Daha fazla bilgi edinmek için bkz. Azure Container Registry hizmet katmanları. Fiyatlandırma hakkında bilgi için bkz. Azure Container Registry fiyatlandırma.
PostgreSQL Esnek Sunucu örneği oluşturma
Örnek uygulama (Django veya Flask), restoran inceleme verilerini postgreSQL veritabanında depolar. Bu adımlarda veritabanını içerecek sunucuyu oluşturursunuz.
Azure'da PostgreSQL sunucusunu oluşturmak için az postgres flexible-server create komutunu kullanın. Bu komutun bitmeden önce birkaç dakika çalışması sık karşılaşılan bir durum değildir.
#!/bin/bash ADMIN_USERNAME=demoadmin ADMIN_PASSWORD=<admin-password> # Use a strong password that meets the requirements for PostgreSQL. POSTGRES_SERVER_NAME=<postgres-server-name> az postgres flexible-server create \ --resource-group $RESOURCE_GROUP_NAME \ --name $POSTGRES_SERVER_NAME \ --location $LOCATION \ --admin-user $ADMIN_USERNAME \ --admin-password $ADMIN_PASSWORD \ --version 16 \ --tier Burstable \ --sku-name Standard_B1ms \ --public-access 0.0.0.0 \ --microsoft-entra-auth Enabled \ --storage-size 32 \ --backup-retention 7 \ --high-availability Disabled \ --yesŞu değerleri kullanın:
<postgres-server-name>: PostgreSQL veritabanı sunucu adı. Bu ad tüm Azure'da benzersiz olmalıdır. Sunucu uç noktası
https://<postgres-server-name>.postgres.database.azure.com. İzin verilen karakterlerAileZ,0ile9ve tire (-).<konum>: Web uygulaması için kullandığınız konumu kullanın. <konumu>,
Namekomutunun çıktısındaki Azure konumaz account list-locations -o tabledeğerlerinden biridir.<admin-username>: Yönetici hesabının kullanıcı adı.
azure_superuser,admin,administrator,root,guestveyapublicolamaz. Bu ders içindemoadminkullanın.<yönetici parolası>: Yönetici kullanıcının parolası. Şu kategorilerin üçünden 8 ila 128 karakter içermelidir: İngilizce büyük harfler, İngilizce küçük harfler, sayılar ve alfasayısal olmayan karakterler.
Önemli
Kullanıcı adları veya parolalar oluştururken dolar işareti ($) karakterini kullanmayın. Daha sonra, bu değerlerle ortam değişkenleri oluşturduğunuzda, bu karakterin Linux kapsayıcısı içinde Python uygulamalarını çalıştırmak için kullandığınız özel bir anlamı vardır.
--version:16kullanın. Sunucu için kullanılacak PostgreSQL sürümünü belirtir.--tier:Burstablekullanın. Sunucunun fiyatlandırma katmanını belirtir. Patlamalı katman, her zaman tam CPU’ya ihtiyaç duymayan iş yükleri için daha düşük maliyetli bir seçenektir ve bu eğitimin gereksinimlerine uygundur.--sku-name: Fiyatlandırma katmanının adı ve işlem yapılandırması; örneğin,Standard_B1ms. Daha fazla bilgi için bkz. fiyatlandırma PostgreSQL için Azure Veritabanı. Kullanılabilir katmanları listelemek içinaz postgres flexible-server list-skus --location <location>kullanın.--public-access:0.0.0.0kullanın. Container Apps gibi herhangi bir Azure hizmetinden sunucuya genel erişim sağlar.--microsoft-entra-auth:Enabledkullanın. Sunucuda Microsoft Entra kimlik doğrulamasını etkinleştirir.--storage-size:32kullanın. Sunucu için depolama boyutunu gigabayt (GB) olarak belirtir. En düşük değer 32 GB'tır.--backup-retention:7kullanın. Sunucu için yedeklemelerin tutulacak gün sayısını belirtir. En az 7 gündür.--high-availability:Disabledkullanın. Sunucu için yüksek kullanılabilirliği devre dışı bırakır. Bu eğitim için yüksek kullanılabilirlik gerekli değildir.--yes: PostgreSQL sunucusu için kullanım koşullarını kabul eder.
Not
Yerel iş istasyonunuzdan PostgreSQL sunucusuyla çalışmayı planlıyorsanız ve araçları kullanıyorsanız, az postgres flexible-server firewall-rule create komutunu kullanarak iş istasyonunuzun IP adresi için bir güvenlik duvarı kuralı eklemeniz gerekir.
Kullanıcı hesabınızın nesne kimliğini almak için az ad signed-in-user show komutunu kullanın. Sonraki komutta bu kimliği kullanacaksınız.
#!/bin/bash CALLER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv) CALLER_DISPLAY_NAME=$(az ad signed-in-user show --query userPrincipalName -o tsv)Kullanıcı hesabınızı PostgreSQL sunucusunda Microsoft Entra yöneticisi olarak eklemek için az postgres flexible-server ad-admin create komutunu kullanın:
#!/bin/bash az postgres flexible-server microsoft-entra-admin create \ --server-name "$POSTGRES_SERVER_NAME" \ --resource-group "$RESOURCE_GROUP_NAME" \ --display-name "$CALLER_DISPLAY_NAME" \ --object-id "$CALLER_OBJECT_ID" \ --type UserWeb uygulamanızın PostgreSQL esnek sunucusuna erişmesine izin veren bir kural eklemek için az postgres flexible-server firewall-rule create komutunu
kullanın. Aşağıdaki komutta, genel IP adresinizi kullanarak sunucunun güvenlik duvarını geliştirme iş istasyonunuzdan gelen bağlantıları kabul etmek üzere yapılandıracaksınız: MY_IP=$(curl -s ifconfig.me) az postgres flexible-server firewall-rule create \ --name "$POSTGRES_SERVER_NAME" \ --resource-group "$RESOURCE_GROUP_NAME" \ --rule-name allow-my-ip \ --start-ip-address "$MY_IP" \ --end-ip-address "$MY_IP" ```
Not
Bu bölümdeki adımlar, Burstable fiyatlandırma katmanında tek bir sanal çekirdek ve sınırlı belleğe sahip bir PostgreSQL sunucusu oluşturur. Patlamalı katman, her zaman tam CPU’ya ihtiyaç duymayan iş yükleri için daha düşük maliyetli bir seçenektir ve bu eğitimin gereksinimlerine uygundur. Üretim iş yükleri için Genel Amaçlı veya Bellek için İyileştirilmiş fiyatlandırma katmanına yükseltebilirsiniz. Bu katmanlar daha yüksek performans sağlar ancak maliyetleri artırır.
Daha fazla bilgi edinmek için bkz. PostgreSQL için Azure Veritabanı - Esnek Sunucu
Sunucuda veritabanı oluşturma
Bu noktada bir PostgreSQL sunucunuz vardır. Bu bölümde, sunucuda bir veritabanı oluşturacaksınız.
az postgres flexible-server db create komutunu kullanarak restaurants_reviewsadlı bir veritabanı oluşturun.
#!/bin/bash
DATABASE_NAME=restaurants_reviews
az postgres flexible-server db create \
--resource-group $RESOURCE_GROUP_NAME \
--server-name $POSTGRES_SERVER_NAME \
--database-name $DATABASE_NAME
Veritabanına bağlanmak ve ardından psql komutlarıyla çalışmak için az postgres flexible-server connect komutunu da kullanabilirsiniz. psql ile çalıştığınızda, tüm bağımlılıkları içerdiği için Azure Cloud Shell kullanmak genellikle daha kolaydır.
Ayrıca PostgreSQL için Azure Veritabanı esnek sunucusuna bağlanabilir ve psql veya Azure Data Studiogibi PostgreSQL'i destekleyen bir IDE kullanarak veritabanı oluşturabilirsiniz. psql kullanma adımları için bu makalenin devamında PostgreSQL veritabanında yönetilen kimliği yapılandırma
Kullanıcı tarafından atanan yönetilen kimlik oluşturma
Azure'da çalışırken kapsayıcı uygulaması için kimlik olarak kullanmak üzere kullanıcı tarafından atanan bir yönetilen kimlik oluşturun.
Not
Kullanıcı Tanımlı Yönetilen Kimlik oluşturmak için hesabınızın Yönetilen Kimlik Katılımcısı rol atamasına sahip olması gerekir.
Kullanıcı tarafından atanan yönetilen kimlik oluşturmak için az identity create komutunu kullanın:
UA_MANAGED_IDENTITY_NAME=<managed-identity-name> # Use a unique name for the managed identity, such as-"my-ua-managed-id".
az identity create \
--name $UA_MANAGED_IDENTITY_NAME
--resource-group $RESOURCE_GROUP_NAME
PostgreSQL veritabanında yönetilen kimliği yapılandırma
Yönetilen kimliği PostgreSQL sunucusunda bir rol olarak yapılandırın ve ardından restaurants_reviews veritabanı için gerekli izinleri verin. Azure CLI veya psql kullanıyor olun, sunucu örneğinizde Microsoft Entra yöneticisi olarak yapılandırılmış bir kullanıcıyla Azure PostgreSQL sunucusuna bağlanmanız gerekir. Sunucunuzda yalnızca PostgreSQL yöneticisi olarak yapılandırılan Microsoft Entra hesapları yönetilen kimlikleri ve diğer Microsoft yönetici rollerini yapılandırabilir.
az account get-access-token komutunu kullanarak Azure hesabınız için bir erişim belirteci alın. Sonraki adımlarda erişim belirtecini kullanacaksınız.
#!/bin/bash MY_ACCESS_TOKEN=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken) echo $MY_ACCESS_TOKENaz postgres flexible-server execute komutunu kullanarak, kullanıcı tarafından atanan yönetilen kimliği PostgreSQL sunucunuzda veritabanı rolü olarak ekleyin.
#!/bin/bash az postgres flexible-server execute \ --name "$POSTGRES_SERVER_NAME" \ --admin-user "$CALLER_DISPLAY_NAME" \ --admin-password "$ACCESS_TOKEN" \ --database-name postgres \ --querytext "SELECT * FROM pgaadauth_create_principal('$UA_MANAGED_IDENTITY_NAME', false, false);"Not
yerel iş istasyonunuzda
az postgres flexible-server executekomutunu çalıştırıyorsanız, iş istasyonunuzun IP adresi için bir güvenlik duvarı kuralı eklediğinizden emin olun. az postgres flexible-server firewall-rule create komutunu kullanarak bir kural ekleyebilirsiniz. Sonraki adımda komut için de aynı gereksinim vardır.Kullanıcı tarafından atanan yönetilen kimliğe aşağıdaki az postgres flexible-server execute komutunu kullanarak restaurants_reviews veritabanında gerekli izinleri verin:
#!/bin/bash SQL_GRANTS=$(cat <<EOF GRANT CONNECT ON DATABASE $DATABASE_NAME TO "$UA_MANAGED_IDENTITY_NAME"; GRANT USAGE, CREATE ON SCHEMA public TO "$UA_MANAGED_IDENTITY_NAME"; GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "$UA_MANAGED_IDENTITY_NAME"; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "$UA_MANAGED_IDENTITY_NAME"; EOF ) az postgres flexible-server execute \ --name "$POSTGRES_SERVER_NAME" \ --admin-user "$CALLER_DISPLAY_NAME" \ --admin-password "$MY_ACCESS_TOKEN" \ --database-name "$DATABASE_NAME" \ --querytext "$SQL_GRANTS"Bu Azure CLI komutu sunucudaki restaurants_reviews veritabanına bağlanır ve aşağıdaki SQL komutlarını gönderir:
GRANT CONNECT ON DATABASE restaurants_reviews TO "my-ua-managed-id"; GRANT USAGE ON SCHEMA public TO "my-ua-managed-id"; GRANT CREATE ON SCHEMA public TO "my-ua-managed-id"; GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "my-ua-managed-id"; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO "my-ua-managed-id";
Web uygulamasını Container Apps'e dağıtma
Azure Container Apps ortamlarına dağıtılan kapsayıcı uygulamaları, güvenli bir sınır görevi görür. Aşağıdaki adımlarda ortamı ve ortamın içinde bir kapsayıcı oluşturursunuz. Ardından kapsayıcıyı web sitesinin dışarıdan görünür olması için yapılandırırsınız.
Bu adımlar için Azure Container Apps uzantısı containerappgerekir.
az containerapp env create komutunu kullanarak bir Container Apps ortamı oluşturun:
#!/bin/bash APP_ENV_NAME=<app-env-name> # Use a unique name for the environment, such as "python-container-env". az containerapp env create \ --name $APP_ENV_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --location $LOCATIONaz acr credential show komutunu kullanarak Azure Container Registry örneğinin oturum açma kimlik bilgilerini alın:
#!/bin/bash REGISTRY_CREDS=$(az acr credential show -n "$REGISTRY_NAME" --query "[username,passwords[0].value]" -o tsv) REGISTRY_USERNAME=$(echo "$REGISTRY_CREDS" | head -n1) REGISTRY_PASSWORD=$(echo "$REGISTRY_CREDS" | tail -n1)5. adımda kapsayıcı uygulamasını oluştururken komutun çıkışından döndürülen kullanıcı adını ve parolalardan birini kullanırsınız.
az identity show komutunu, kullanıcı tarafından atanan yönetilen kimliğin müşteri kimliğini ve kaynak kimliğini almak için kullanın.
UA_CLIENT_ID=$(az identity show \ --name "$UA_MANAGED_IDENTITY_NAME" \ --resource-group "$RESOURCE_GROUP_NAME" \ --query clientId -o tsv) UA_RESOURCE_ID=$(az identity show \ --name "$UA_MANAGED_IDENTITY_NAME" \ --resource-group "$RESOURCE_GROUP_NAME" \ --query id -o tsv)5. adımda kapsayıcı uygulamasını oluştururken komutun çıkışındaki istemci kimliğinin (GUID) ve kaynak kimliğinin değerini kullanırsınız. Kaynak kimliği şu forma sahiptir:
/subscriptions/<subscription-id>/resourcegroups/pythoncontainer-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-ua-managed-id.Gizli anahtar değeri oluşturmak için aşağıdaki komutu çalıştırın:
AZURE_SECRET_KEY=$(python -c 'import secrets; print(secrets.token_hex())')5. adımda kapsayıcı uygulamasını oluştururken ortam değişkeni ayarlamak için gizli anahtar değerini kullanırsınız.
Not
Bu adımın gösterdiği komut bir Bash kabuğu içindir. Ortamınıza bağlı olarak,
python3kullanarak Python'ı çağırmanız gerekebilir. Windows'da, komutu-cparametresine tek tırnak yerine çift tırnak içinde eklemeniz gerekir. Ortamınıza bağlı olarakpyveyapy -3kullanarak Python'ı çağırmanız da gerekebilir.az containerapp create komutunu kullanarak ortamda bir kapsayıcı uygulaması oluşturun:
az containerapp create \ --name "$CONTAINER_APP_NAME" \ --resource-group "$RESOURCE_GROUP_NAME" \ --environment "$APP_ENV_NAME" \ --image "$REGISTRY_NAME.azurecr.io/$IMAGE_NAME" \ --target-port "$TARGET_PORT" \ --ingress external \ --registry-server "$REGISTRY_NAME.azurecr.io" \ --registry-username "$REGISTRY_USERNAME" \ --registry-password "$REGISTRY_PASSWORD" \ --user-assigned "$UA_RESOURCE_ID" \ --env-vars \ DBHOST="$POSTGRES_SERVER_NAME" \ DBNAME="$DATABASE_NAME" \ DBUSER="$UA_MANAGED_IDENTITY_NAME" \ RUNNING_IN_PRODUCTION=1 \ AZURE_CLIENT_ID="$UA_CLIENT_ID" \ AZURE_SECRET_KEY="$AZURE_SECRET_KEY"Yalnızca Django için bir veritabanı şemasını uygulayın ve oluşturun. (Flask örnek uygulamasında otomatik olarak yapılır ve bu adımı atlayabilirsiniz.)
az containerapp exec
komutunu kullanarak bağlanın: az containerapp exec \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP_NAMEArdından, kabuk komut istemine "
python manage.py migrate" yazın.Kapsayıcının düzeltmeleri için geçiş yapmanız gerekmez.
Web sitesini test edin.
Daha önce girdiğiniz
az containerapp createkomutu, uygulamaya göz atmak için kullanabileceğiniz bir uygulama URL'si oluşturur. URLazurecontainerapps.ioile biter. Tarayıcıda URL'ye gidin. Alternatif olarak az containerapp browse komutunu kullanabilirsiniz.
Burada, bir restoran ve iki inceleme eklendikten sonra örnek web sitesi örneği verilmiş.
Dağıtım sorunlarını giderme
Web sitesine erişmek için uygulama URL'sini unuttunuz
Azure portalında:
- Kapsayıcı uygulamasının Genel Bakış sayfasına gidin ve Uygulama URL'siniarayın.
VS Code'da:
- Azure görünüm (Ctrl+Shift+A) gidin ve üzerinde çalıştığınız aboneliği genişletin.
- Container Apps düğümünü genişletin, yönetilen ortamı genişletin, python-container-appüzerine sağ tıklayın ve Gözatöğesini seçin. VS Code, uygulama URL'sini içeren tarayıcıyı açar.
Azure CLI'da:
- komutunu
az containerapp show -g pythoncontainer-rg -n python-container-app --query properties.configuration.ingress.fqdnkullanın.
VS Code'da Azure'da Görüntü Oluşturma görevi hata döndürüyor
"Hata: bağlam indirilemedi. LÜTFEN URL'nin yanlış olup olmadığını denetleyin", VS Code Çıktı penceresinde, Docker uzantısındaki kayıt defterini yenileyin. Yenilemek için Docker uzantısını seçin, Kayıt Defterleri bölümüne gidin, kayıt defterini bulun ve seçin.
Azure'da
Azure portalında, kapsayıcı uygulaması oluşturulurken bir erişim hatası görüntülenir
Azure Container Registry örneğindeki yönetici kimlik bilgileri devre dışı bırakıldığında "ACR'ye erişilemiyor'<adı>.azurecr.io" ifadesini içeren bir erişim hatası oluşur.
Portalda yönetici durumunu denetlemek için Azure Container Registry örneğine gidin, Erişim anahtarları kaynağını seçin ve Yönetici kullanıcı etkinleştirildiğinden emin olun.
Kapsayıcı görüntünüz Azure Container Registry örneğinde görünmüyor
- Azure CLI komutunun veya VS Code çıkışını denetleyin ve başarılı olduğunu onaylamak için mesajlar arayın.
- Azure CLI ile derleme komutunuzda veya VS Code görev istemlerinde kayıt defterinin adının doğru belirtildiğini denetleyin.
- Kimlik bilgilerinizin süresinin dolmadığından emin olun. Örneğin VS Code'da Docker uzantısında hedef kayıt defterini bulun ve yenileyin. Azure CLI'da
az loginçalıştırın.
Web sitesi "Hatalı İstek (400)" döndürüyor
"Hatalı İstek (400)" hatası alırsanız, kapsayıcıya geçirilen PostgreSQL ortam değişkenlerini denetleyin. 400 hatası genellikle Python kodunun PostgreSQL örneğine bağlanamazsınız.
Bu öğreticide kullanılan örnek kod, herhangi bir değere (RUNNING_IN_PRODUCTIONgibi) ayarlanabilen 1kapsayıcı ortam değişkeninin varlığını denetler.
Web sitesi "Bulunamadı (404)" değerini döndürür
- Kapsayıcının Genel Bakış sayfasında Uygulama URL'sine ait değerini denetleyin. Uygulama URL'si "iç" sözcüğünü içeriyorsa, giriş doğru ayarlanmadı.
- Kapsayıcının girişini denetleyin. Örneğin, Azure portalında, kapsayıcının Ingress kaynağına gidin. HTTP Girişi ve etkin olduğundan ve trafiği her yerden kabul et seçeneği seçildiğinden emin olun.
Web sitesi başlatılmıyor, "akış zaman aşımı" alıyorsunuz veya hiçbir şey döndürülmüyor
- Günlükleri denetleyin:
- Azure portalında kapsayıcı uygulamasının gözden geçirme yönetimi kaynağına gidin ve kapsayıcı için Sağlama Durumu'nu kontrol edin:
- Durum sağlamaise, sağlama bitene kadar bekleyin.
- Durum Başarısızise düzeltmeyi seçin ve konsol günlüklerini görüntüleyin.
Saat Oluşturuldu, Stream_sve Log_sgösterilecek sütunların sırasını seçin. Günlükleri en sonlara göre sıralayın ve
stderrsütununda Pythonstdoutve iletilerini arayın. Pythonprintçıkışıstdoutmesajlarıdır.
- Azure CLI'de az containerapp logs show komutunu kullanın.
- Azure portalında kapsayıcı uygulamasının gözden geçirme yönetimi kaynağına gidin ve kapsayıcı için Sağlama Durumu'nu kontrol edin:
- Django çerçevesini kullanıyorsanız restaurants_reviews tablolarının veritabanında mevcut olup olmadığını denetleyin. Aksi takdirde, kapsayıcıya erişmek ve komutunu çalıştırmak
python manage.py migrateiçin bir konsol kullanın.