Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure Developer CLI (azd) podporuje nasazení Azure Container Apps i Azure Container App Jobs. Pro Azure Container Apps azd nabízí dvě strategie nasazení:
- Strategie založená na imagích. Odděluje aktualizace konfigurace kontejnerové aplikace od nasazení obrazů.
- Strategie založená na revizích Kombinuje obojí do jednoho nasazení a podporuje pokročilé vzory zavedení.
Následující části popisují obě strategie spolu s nasazením úloh kontejnerové aplikace.
Nasadit do Container Apps express (preview)
azdpodporuje nasazení založená na imagích pro Azure Container Apps Express (Preview). Použijte existující containerapp hostitele v azure.yaml; pro express nepotřebujete samostatný typ hostitele:
Důležité
Podpora Express pro Container Apps vyžaduje verzi azd 1.35.0-beta.1 nebo novější.
services:
web:
host: containerapp
image: mcr.microsoft.com/azuredocs/containerapps-helloworld:latest
docker:
imagePassthrough: true
Ve vaší infrastruktuře vytvořte spravované prostředí s properties.environmentMode nastaveným na Express. Aplikace kontejneru musí odkazovat na toto prostředí a obsahovat azd-service-name značku, která odpovídá názvu služby v azure.yaml:
resource containerAppsEnvironment 'Microsoft.App/managedEnvironments@2026-07-01' = {
name: 'cae-${environmentName}'
location: location
properties: {
environmentMode: 'Express'
}
}
Definujte Microsoft.App/containerApps zdroj s environmentId nastaveným na hodnotu containerAppsEnvironment.id. Přidejte značku azd-service-name s hodnotou web, tak aby odpovídala názvu služby v souboru azure.yaml.
Během azd deployazd detekuje expresní režim nadřazeného prostředí a aktualizuje image kontejneru bez nastavení přípony vlastní revize nebo vah provozu. Express automaticky provede jednorevizní průběžnou aktualizaci.
Pro Express použijte strategii nasazení založenou na image. Strategie založená na revizích neupraví vaše nasazení v Bicepu pro Express a Express nepodporuje více revizí ani rozdělení provozu. Před definováním infrastruktury si projděte aktuální dostupnost a omezení funkcí Express.
Strategie nasazení založená na obrázcích
V této strategii se vytvoří a aktualizuje konfigurace aplikace kontejneru během azd provision, zatímco image kontejneru se aktualizuje během azd deploy.
- Definice aplikace kontejneru (prostředky, proměnné prostředí, sondy stavu atd.) se nachází v modulu Bicep použitém během zřizování.
- Během nasazení se změní pouze odkaz na image kontejneru (
containers[0].image).
Chování revize
Každá změna konfigurace aplikace nebo image aktivuje novou revizi:
| Step | Command | Použije změny na | Poznámky |
|---|---|---|---|
| 1 | azd provision |
Proměnné prostředí, prostředky, připojené systémy, sondy, nástroje pro vyrovnávání zatížení | Vytvoří novou revizi. |
| 2 | azd deploy |
Image kontejneru | Vytvoří jinou revizi. |
Každá revize přiděluje další repliky v prostředí Container Apps, což může dočasně zvýšit využití prostředků a náklady.
Poznámka:
V této strategii nejsou podporovány pokročilé vzory zavedení, jako je modro-zelené nebo kanárkové nasazení.
Konfigurace nasazení založených na obrazech
Pokud chcete zajistit, aby došlo k aktualizaci existující kontejnerové aplikace bez přepsání nejnovější nasazené image, proveďte operaci azd provision. Tento model implementuje modul AVM container-app-upsert a skládá se ze dvou kroků:
V
main.parameters.jsondefinujte parametr, který odkazuje na proměnnou poskytovanouSERVICE_{NAME}_RESOURCE_EXISTSazd. Tato proměnná se automatickyazdnastaví v době zřízení k označení, jestli prostředek již existuje.{ "$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}" } } }V souboru Bicep použijte parametr
existspro kontrolu, zda se má aplikace kontejneru vytvořit nebo aktualizovat. Modulcontainer-app-upserttuto logiku zapouzdřuje interně.@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 } }Tento přístup umožňuje
azd provisionupsertovat (aktualizovat, pokud již existuje, vytvořit, pokud ne) zdroj kontejnerové aplikace bezpečně bez nutnosti ručních kontrol.Návod
Udržujte
apiVersionvazure.yamlsladěný sapiVersionmodulu Bicep proMicrosoft.App/containerApps, aby nedocházelo k neshodám.
Strategie nasazení na základě revizí
V této strategii se definice kontejnerové aplikace i image nasadí společně během azd deploy.
Konfigurace aplikace kontejneru se nachází ve vyhrazeném modulu Bicep použitém během nasazování.
Změny proměnných prostředí, obrázků, zdrojů a nastavení vyrovnávání zátěže jsou vydány jako jedna revize.
Návod
Tato strategie podporuje modrozelený, kanár a další pokročilé vzory zavedení.
Konfigurace nasazení podle revizí
Definujte nasazení aplikace kontejneru vytvořením souboru infrastruktury pro vaši službu, například
infra/api.bicep. Aplikaci kontejneru můžete definovat pomocí modulu založeného na AVM nebo definováním prostředku přímo:@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' } } }Zadejte parametry v době nasazení vytvořením souboru parametrů (např.
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}" } } }Poznámka:
SERVICE_API_IMAGE_NAMEje dynamicky nastavená během nasazování a není součástí zřizovacích výstupů.Při spuštění
azd deployse revize aplikace kontejneru použije na základě výše uvedené definice prostředku.Návod
Pokud vaše aplikace kontejneru odkazuje na jiné zřízené prostředky, předejte všechny další výstupy z
azd provisionjako parametryazd deploy.
Souhrn porovnání
| Aspekt | Založené na imagích | Na základě revizí |
|---|---|---|
| Příkaz Aktualizovat | azd provision + azd deploy |
azd deploy pouze |
| Typ uvedení | Dvě revize | Jedna revize |
| Ovládací prvek uvedení | Spravováno azd |
Konfigurovatelné (modrá zelená, kanárka) |
| Případ použití | Jednoduchá prostředí | Pokročilá nasazení |
| Umístění definice kontejnerové aplikace | Bicep v čase zřizování | Bicep v čase nasazení |
Nasazení úloh kontejnerové aplikace
Kromě kontejnerových aplikací azd podporuje nasazení úloh Azure Container App (Microsoft.App/jobs). Úlohy kontejnerové aplikace jsou navržené pro úlohy, které se spouští až do dokončení, jako je dávkové zpracování, naplánované úkoly nebo práce řízené událostmi.
Poznámka:
Úlohy kontejnerové aplikace používají stejné nastavení v host: containerappazure.yaml. Není vyžadován žádný nový typ hostitele. Šablona Bicep určuje, jestli azd zprostředkuje kontejnerovou aplikaci nebo úlohu kontejnerové aplikace na základě vámi definovaného typu prostředku.
Jak to funguje
Když azd zjistí zdroj úlohy označený značkou azd-service-name, bude:
- Sestaví a nasdílí image Dockeru do služby Azure Container Registry (stejné jako Container Apps).
- Aktualizuje image kontejneru úlohy zavoláním rozhraní API služby Container App Jobs místo rozhraní API Container Apps.
- Vrátí prázdné koncové body, protože úlohy nemají žádný ingres.
Konfigurace nasazení úlohy kontejnerové aplikace
Definujte
azure.yamlsoubor pro vaši úlohu. Použitíhost: containerappalanguage: docker:name: myapp services: job: host: containerapp language: docker project: ./src/job docker: path: ./Dockerfile context: .Vytvořte modul Bicep, který provisuje
Microsoft.App/jobsprostředek. Označte prostředek pomocíazd-service-name, aby hoazdmohl nalézt. Parametry a existující odkazy na prostředky (registr kontejnerů, spravované prostředí, identita) se řídí stejným vzorem jako výše uvedené příklady Container Apps: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}': {} } } }Důležité
Hodnota
azd-service-nameznačky se musí shodovat s názvem služby vazure.yamlsouboru. Tato značka je způsob, jakazdspojuje zřízený prostředek s vaší službou.Spusťte
azd upke zřízení a nasazení. Rozhraní příkazového řádku automaticky zjistí, že označeným prostředkem je úloha kontejnerové aplikace a odpovídajícím způsobem zpracovává nasazení.
Hlavní rozdíly mezi container Apps
| Aspekt | Container Apps | Úlohy aplikací s kontejnery |
|---|---|---|
| Typ zdroje | Microsoft.App/containerApps |
Microsoft.App/jobs |
| Vstupní bod/koncové body | Podporuje příchozí přenos dat HTTP. | Žádný vstup (prázdné koncové body) |
| Model spouštění | Dlouhotrvající služby | Úkoly dokončení spuštění |
| Typy aktivačních událostí | Řízené žádostmi | Ruční, naplánované nebo řízené událostmi |
Nastavení hostitele v azure.yaml |
host: containerapp |
host: containerapp |
Dodatečné zdroje
- Přehled služby Azure Container Apps
- Stručný přehled Azure Container Apps
- Přehled úloh Azure Container Apps
- Referenční informace ke službě Azure Container Apps Bicep
- Referenční informace o úlohách Azure Container Apps v Bicep
- Přehled rozhraní .NET Aspire
- Šablony aplikací todo (používající techniku založenou na obrázcích)