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.
Azure Geliştirici CLI'sı (azd), hem Azure Container Apps hem de Azure Container App İşleri dağıtmayı destekler. Azure Container Apps azd için iki dağıtım stratejisi sunar:
- Görüntü tabanlı strateji. Kapsayıcı uygulaması yapılandırma güncelleştirmelerini görüntü dağıtımlarından ayırır.
- Düzeltme tabanlı strateji. Her ikisini de tek bir dağıtımda birleştirir ve gelişmiş dağıtım desenlerini destekler.
Aşağıdaki bölümlerde her iki stratejinin yanı sıra Container App İşleri'nin nasıl dağıtılacağı açıklanmaktadır.
Container Apps express'e dağıt (önizleme)
azd
Azure Container Apps express (önizleme) için görüntü tabanlı dağıtımları destekler.
containerapp içindeki mevcut azure.yaml ana bilgisayarı kullanın; express için ayrı bir ana bilgisayar türüne ihtiyacınız yoktur:
Önemli
Container Apps express desteği için azd sürüm 1.35.0-beta.1 veya üzeri gerekir.
services:
web:
host: containerapp
image: mcr.microsoft.com/azuredocs/containerapps-helloworld:latest
docker:
imagePassthrough: true
Altyapınızda, Express değeri properties.environmentMode olarak ayarlanmış bir yönetilen ortam oluşturun. Kapsayıcı uygulamasının bu ortama başvurması ve azd-service-name içindeki hizmet adıyla eşleşen bir azure.yaml etiketi içermesi gerekir:
resource containerAppsEnvironment 'Microsoft.App/managedEnvironments@2026-07-01' = {
name: 'cae-${environmentName}'
location: location
properties: {
environmentMode: 'Express'
}
}
containerAppsEnvironment.id değeri environmentId olarak ayarlanmış Microsoft.App/containerApps kaynağını tanımlayın.
azd-service-name içindeki hizmet adıyla eşleşmesi için web değerine sahip bir azure.yaml etiketi ekleyin.
azd sırasında azd deploy üst ortamın express modunu algılar ve özel bir düzeltme soneki veya trafik ağırlığı ayarlamadan kapsayıcı görüntüsünü güncelleştirir. Express tek düzeltmeli aşamalı güncelleştirmeyi otomatik olarak gerçekleştirir.
express için görüntü tabanlı dağıtım stratejisini kullanın. Revizyon tabanlı strateji, dağıtım Bicep'inizi express için uyarlamaz ve express birden çok revizyonu veya trafiği bölmeyi desteklemez. Altyapınızı tanımlamadan önce geçerli Express özellik kullanılabilirliğini ve sınırlamalarını gözden geçirin.
Görüntü tabanlı dağıtım stratejisi
Bu stratejide kapsayıcı uygulaması yapılandırması sırasında azd provisionoluşturulur ve güncelleştirilirken kapsayıcı görüntüsü sırasında azd deploygüncelleştirilir.
- Kapsayıcı uygulama tanımı (kaynaklar, ortam değişkenleri, sistem durumu yoklamaları vb.), sağlama sırasında uygulanan bir Bicep modülünde bulunur.
- Dağıtım sırasında yalnızca kapsayıcı görüntü referansı (
containers[0].image) değişir.
Düzeltme davranışı
Uygulama yapılandırmasında veya görüntüsünde yapılan her değişiklik yeni bir düzeltmeyi tetikler:
| Step | Command | Değişiklikleri şunlara uygular: | Notes |
|---|---|---|---|
| 1 | azd provision |
Ortam değişkenleri, kaynaklar, bağlamalar, yoklamalar, yük dengeleyiciler | Yeni bir düzeltme oluşturur |
| 2 | azd deploy |
Kapsayıcı görüntüsü | Başka bir düzeltme oluşturur |
Her revizyon, Container Apps ortamında ek çoğaltmalar tahsis eder ve bu durum kaynak kullanımını ve maliyeti geçici olarak artırabilir.
Uyarı
Bu stratejide mavi-yeşil veya kanarya gibi gelişmiş dağıtım desenleri desteklenmez.
Görüntü tabanlı dağıtımları yapılandırma
Mevcut bir kapsayıcı uygulamasını en son dağıtılan görüntü üzerine yazmadan güncellemek için azd provision öğesinde bir upsert işlemi gerçekleştirin. Bu desen AVM container-app-upsert modülü tarafından uygulanır ve iki adımdan oluşur:
Sizin
main.parameters.jsoniçinde, azd tarafından sağlananSERVICE_{NAME}_RESOURCE_EXISTSdeğişkenine başvuran bir parametre tanımlayın. Bu değişken, kaynağın zaten var olup olmadığını belirtmek içinazdtarafından sağlama zamanında otomatik olarak ayarlanır.{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "environmentName": { "value": "${AZURE_ENV_NAME}" }, "location": { "value": "${AZURE_LOCATION}" }, // ... other parameters "apiExists": { "value": "${SERVICE_API_RESOURCE_EXISTS}" } } }Bicep dosyanızda, kapsayıcı uygulamasının oluşturulup oluşturulmayacağını veya güncellenip güncellenmeyeceğini kontrol etmek için
existsparametresine başvurun. Modül bucontainer-app-upsertmantığı dahili olarak kapsüller.@description('Indicates whether the container app resource already exists.') param apiExists bool module api 'br/public:avm/ptn/azd/container-app-upsert:0.1.2' = { name: 'api' params: { name: 'my-api' location: location containerAppsEnvironmentName: containerAppsEnvironment.name containerRegistryName: containerRegistry.name imageName: !empty(apiImageName) ? apiImageName : '' exists: apiExists env: [ { name: 'MONGODB_CONNECTION_STRING' value: mongodb.outputs.connectionString } ] targetPort: 3100 } }Bu yaklaşım,
kapsayıcı uygulaması kaynağını güvenli bir şekilde upsert (varsa güncelleştir, yoksa oluştur) el ile denetimler olmadan sağlar.İpucu
Bicep modülündeki
apiVersion,azure.yamlileapiVersion'inMicrosoft.App/containerAppsilişkin uyumunu koruyun ve uyumsuzluklardan kaçının.
Revizyon tabanlı dağıtım stratejisi
Bu stratejide, hem kapsayıcı uygulama tanımı hem de görüntüsüazd deploy sırasında birlikte dağıtılır.
Kapsayıcı uygulama yapılandırması, dağıtım sırasında uygulanan özel bir Bicep modülünde bulunur.
Ortam değişkenlerinde, görüntülerde, kaynaklarda ve yük dengeleme ayarlarında yapılan değişiklikler tek bir düzeltme olarak dağıtılır.
İpucu
Bu strateji mavi-yeşil, kanarya ve diğer gelişmiş dağıtım desenlerini destekler.
Düzeltme tabanlı dağıtımları yapılandırma
Kapsayıcı uygulama dağıtımını tanımlayın, örneğin
infra/api.bicepgibi, hizmetiniz için bir altyapı dosyası oluşturarak. AVM tabanlı modülü kullanarak veya kaynağı doğrudan tanımlayarak kapsayıcı uygulamanızı tanımlayabilirsiniz:@description('Unique environment name used for resource naming.') param environmentName string @description('Primary location for all resources.') param location string param containerRegistryName string param containerAppsEnvironmentName string param imageName string param identityId string resource containerRegistry 'Microsoft.ContainerRegistry/registries@2023-01-01-preview' existing = { name: containerRegistryName } resource containerAppsEnvironment 'Microsoft.App/managedEnvironments@2022-03-01' existing = { name: containerAppsEnvironmentName } module api 'br/public:avm/res/app/container-app:0.8.0' = { name: 'api' params: { name: 'api' ingressTargetPort: 80 scaleMinReplicas: 1 scaleMaxReplicas: 10 containers: [ { name: 'main' image: imageName resources: { cpu: json('0.5') memory: '1.0Gi' } } ] managedIdentities: { systemAssigned: false userAssignedResourceIds: [identityId] } registries: [ { server: containerRegistry.properties.loginServer identity: identityId } ] environmentResourceId: containerAppsEnvironment.id location: location tags: { 'azd-env-name': environmentName 'azd-service-name': 'api' } } }Bir parametre dosyası oluşturarak dağıtım zamanında parametreler sağlayın (örn.
api.parameters.json):{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "environmentName": { "value": "${AZURE_ENV_NAME}" }, "location": { "value": "${AZURE_LOCATION}" }, "containerRegistryName": { "value": "${AZURE_CONTAINER_REGISTRY_NAME}" }, "containerAppsEnvironmentName": { "value": "${AZURE_CONTAINER_ENVIRONMENT_NAME}" }, "imageName": { "value": "${SERVICE_API_IMAGE_NAME}" }, "identityId": { "value": "${SERVICE_API_IDENTITY_ID}" } } }Uyarı
SERVICE_API_IMAGE_NAMEdağıtım sırasında dinamik olarak ayarlanır ve sağlama çıkışlarının bir parçası değildir.azd deploy'yi çalıştırdığınızda, kapsayıcı uygulama revizyonu yukarıdaki kaynak tanımı kullanılarak uygulanır.İpucu
Kapsayıcı uygulamanız sağlanan diğer kaynaklara başvuruyorsa,
azd provisionek çıkışlarıazd deploy'a parametre olarak iletin.
Karşılaştırma özeti
| Görünüş | Görüntü tabanlı | Revizyon tabanlı |
|---|---|---|
| Güncelleştir komutu | azd provision + azd deploy |
azd deploy sadece |
| Dağıtım türü | İki düzeltme | Tek düzeltme |
| Dağıtım denetimi | Tarafından yönetilir azd |
Yapılandırılabilir (mavi-yeşil, kanarya) |
| Kullanım örneği | Basit ortamlar | Gelişmiş dağıtımlar |
| Kapsayıcı uygulama tanımı konumu | Bicep tedarik süresi | Dağıtım zamanı Bicep |
Kapsayıcı Uygulama İşlerini Konumlandırma
Container Apps'e ek olarak, azd Azure Container App jobs (Microsoft.App/jobs) dağıtımlarını da destekler. Kapsayıcı Uygulama İşleri, toplu işleme, zamanlanmış görevler veya olay temelli çalışma gibi tamamen tamamlanana kadar süren görevler için tasarlanmıştır.
Uyarı
Kapsayıcı Uygulama İşleri, host: containerapp içinde aynı azure.yaml ayarını kullanır. Yeni bir konak türü gerekmez. Bicep şablonu, tanımladığınız kaynak türüne göre bir Kapsayıcı Uygulaması mı yoksa Kapsayıcı Uygulama Görevi mi sağlanıp sağlanmadığını belirler.
Nasıl çalışır?
azd ile etiketlenmiş bir iş kaynağını keşfettiğindeazd-service-name, o:
- Docker görüntüsünü derler ve Azure Container Registry'ye gönderir (Container Apps ile aynı).
- Container Apps API'sinin yerine Container App Jobs API'sini çağırarak işin kapsayıcı görüntüsünü güncelleştirir.
- İşlerin girişi olmadığından boş uç noktaları döndürür.
Kapsayıcı Uygulama İşi'nin Dağıtımını Yapılandırma
azure.yamlİş hizmetinizin dosyasını tanımlayın.host: containerappvelanguage: dockerkullanın:name: myapp services: job: host: containerapp language: docker project: ./src/job docker: path: ./Dockerfile context: .Bicep modülü ile bir
Microsoft.App/jobskaynağı sağlayın. Kaynağı bulabilmesi içinazd-service-nameileazdetiketleyin. Parametreler ve mevcut kaynak başvuruları (kapsayıcı kayıt defteri, yönetilen ortam, kimlik) yukarıdaki Container Apps örnekleriyle aynı deseni izler:resource job 'Microsoft.App/jobs@2025-02-02-preview' = { name: 'job' location: location tags: { 'azd-env-name': environmentName 'azd-service-name': 'job' } properties: { environmentId: containerAppsEnvironment.id configuration: { replicaTimeout: 300 replicaRetryLimit: 1 triggerType: 'Manual' registries: [ { server: containerRegistry.properties.loginServer identity: identityId } ] } template: { containers: [ { image: imageName name: 'main' resources: { cpu: json('0.5') memory: '1.0Gi' } } ] } } identity: { type: 'UserAssigned' userAssignedIdentities: { '${identityId}': {} } } }Önemli
Etiket
azd-service-namedeğeri dosyanızdakiazure.yamlhizmet adıyla eşleşmelidir. Bu etiket, sağlanan kaynağı hizmetinizle ilişkilendirme yöntemidirazd.Sağlamak ve dağıtmak için komutunu çalıştırın
azd up. CLI, etiketli kaynağın bir Container App İşi olduğunu otomatik olarak algılar ve dağıtımı uygun şekilde işler.
Container Apps'ten önemli farklar
| Görünüş | Konteyner Uygulamaları | Kapsayıcı Uygulama Görevleri |
|---|---|---|
| Kaynak türü | Microsoft.App/containerApps |
Microsoft.App/jobs |
| Giriş/uç noktalar | HTTP girişini destekler | Giriş yok (boş uç noktalar) |
| Yürütme modeli | Uzun süre çalışan hizmetler | Bitene Kadar Çalıştırma Görevleri |
| Tetikleyici türleri | Talep odaklı | El ile, zamanlanmış veya olay bazlı |
azure.yaml içinde konak ayarı |
host: containerapp |
host: containerapp |