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 Azure Developer CLI (azd) támogatja az Azure Container Apps és az Azure Container App Jobs üzembe helyezését is. Az Azure Container Apps azd esetében két üzembehelyezési stratégiát kínál:
- Képalapú stratégia. Elkülöníti a tárolóalkalmazás konfigurációs frissítéseit a rendszerképek központi telepítésétől.
- Korrektúraalapú stratégia. Mindkettőt egyetlen üzembe helyezésre egyesíti, és támogatja a speciális bevezetési mintákat.
A következő szakaszok mindkét stratégiát ismertetik, valamint a Container App Jobs üzembe helyezésének módját.
Üzembe helyezés a Container Apps expressben (előzetes verzió)
azd támogatja a képalapú telepítéseket a Azure Container Apps express (preview) szolgáltatásba. Használja a meglévő containerapp hosztot azure.yaml; nincs szükség külön hoszttípusra az Expresshez:
Fontos
A Container Apps express támogatásához a azd 1.35.0-béta.1-es vagy újabb verzió szükséges.
services:
web:
host: containerapp
image: mcr.microsoft.com/azuredocs/containerapps-helloworld:latest
docker:
imagePassthrough: true
Az infrastruktúrában hozzon létre egy felügyelt környezetet, ahol a(z) properties.environmentMode értéke Express. A tárolóalkalmazásnak hivatkoznia kell erre a környezetre, és tartalmaznia kell egy olyan azd-service-name címkét, amely megegyezik a(z) azure.yaml szolgáltatásnevével:
resource containerAppsEnvironment 'Microsoft.App/managedEnvironments@2026-07-01' = {
name: 'cae-${environmentName}'
location: location
properties: {
environmentMode: 'Express'
}
}
Adja meg az Microsoft.App/containerApps erőforrást, ahol a(z) environmentId értéke containerAppsEnvironment.id. Adjon hozzá egy olyan címkét azd-service-name, amelynek az értéke web, hogy megegyezzen a szolgáltatás nevével azure.yaml.
A folyamat során a azd deploy észleli a szülőkörnyezet expressz módját, és frissíti a konténerképet egyéni revízióutótag vagy forgalmi súlyok beállítása nélkül. Az Express automatikusan végrehajt egyetlen verziót érintő gördülő frissítést.
Használja a képalapú üzembe helyezési stratégiát az Expresshez. A változatalapú stratégia nem igazítja az üzembe helyezési Bicep-sablont az expresszhez, és az expressz nem támogatja a több változatot vagy a forgalom felosztását. Az infrastruktúra meghatározása előtt tekintse át az express szolgáltatások aktuális rendelkezésre állását és korlátozásait.
Rendszerképalapú üzembehelyezési stratégia
Ebben a stratégiában a tárolóalkalmazás konfigurációja létrejön és frissül a azd provision alatt, míg a konténerkép frissítése a azd deploy alatt történik.
- A tárolóalkalmazás definíciója (erőforrások, környezeti változók, állapotminták stb.) a kiépítés során alkalmazott Bicep-modulban található.
- Csak a tárolórendszerkép-referencia (
containers[0].image) változik az üzembe helyezés során.
Korrektúra viselkedése
Az alkalmazáskonfiguráció vagy a rendszerkép minden módosítása új változatot aktivál:
| Step | Command | Módosítások alkalmazása | Jegyzetek |
|---|---|---|---|
| 1 | azd provision |
Környezeti változók, erőforrások, csatlakoztatások, mintavételek, terheléselosztók | Új változat létrehozása |
| 2 | azd deploy |
Konténer kép | Egy másik változatot hoz létre |
Minden változat további replikákat foglal le a Container Apps-környezetben, amelyek ideiglenesen növelhetik az erőforrás-használatot és a költségeket.
Megjegyzés:
A speciális bevezetési minták, például a kék-zöld vagy a kanári nem támogatottak ebben a stratégiában.
Képalapú telepítések konfigurálása
Ha gondoskodni szeretne arról, hogy azd provision egy meglévő tárolóalkalmazás frissítése a legújabb üzembe helyezett rendszerkép felülírása nélkül történjen, végezzen upsert műveletet. Ezt a mintát az AVM-modul container-app-upsert valósítja meg, és két lépésből áll:
main.parameters.jsonAdjon meg egy paramétert, amely az azd által megadott változóraSERVICE_{NAME}_RESOURCE_EXISTShivatkozik. A rendszer automatikusan beállítja ezt a változót aazdkiépítéskor, hogy jelezze, hogy az erőforrás már létezik-e.{ "$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}" } } }A Bicep-fájlban hivatkozzon a
existsparaméterre annak ellenőrzéséhez, hogy létre kell-e hozni vagy frissíteni a tárolóalkalmazást. Acontainer-app-upsertmodul belsőleg foglalja magában ezt a logikát.@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 } }Ez a megközelítés lehetővé teszi
azd provisiona tárolóalkalmazás erőforrásának biztonságos upsertelését (frissíti, ha létezik, vagy létrehozza, ha nem), manuális ellenőrzések nélkül.Jótanács
Tartsa a
apiVersionésazure.yamlelemeket a Bicep-modullalapiVersionilletveMicrosoft.App/containerAppsösszhangban az eltérések elkerülése érdekében.
Változatalapú üzembe helyezési stratégia
Ebben a stratégiában a konténer alkalmazás definíciója és rendszerképe együtt kerül üzembe helyezésre azd deploy során.
A tárolóalkalmazás konfigurációja az üzembe helyezés során alkalmazott dedikált Bicep-modulban található.
A környezeti változók, képek, erőforrások és terheléselosztási beállítások módosításai egyetlen változatként jelennek meg.
Jótanács
Ez a stratégia támogatja a kék-zöld, a kanári- és egyéb fejlett bevezetési mintákat.
Verzióalapú üzembe helyezések konfigurálása
A tárolóalkalmazás üzembe helyezésének definiálásához hozzon létre egy infrafájlt a szolgáltatáshoz, például
infra/api.bicep. A tárolóalkalmazást az AVM-alapú modullal vagy közvetlenül az erőforrás definiálásával határozhatja meg:@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' } } }Paraméterek megadása üzembe helyezéskor paraméterfájl létrehozásával (pl.
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}" } } }Megjegyzés:
SERVICE_API_IMAGE_NAMEdinamikusan van beállítva az üzembe helyezés során, és nem része a kiépítési kimeneteknek.Amikor futtatja a(z)
azd deploy, a tárolóalkalmazás változata a fenti erőforrásdefinícióval kerül alkalmazásra.Jótanács
Továbbítson el minden további kimenetet
azd provisionparaméterkéntazd deployrészére, ha a tárolóalkalmazás más kiépített erőforrásokra hivatkozik.
Összehasonlítás összegzése
| Jellemző | Képalapú | Korrektúraalapú |
|---|---|---|
| Frissítési parancs | azd provision + azd deploy |
azd deploy csak |
| Bevezetés típusa | Két változat | Egyetlen változat |
| Bevezetési vezérlő | Felügyelte: azd |
Konfigurálható (kék-zöld, kanári) |
| Felhasználási eset | Egyszerű környezetek | Haladó telepítések |
| A tárolóalkalmazás definíció helye | Üzembe helyezési idő Bicep | Üzembe helyezési idejű Bicep |
Konténeralkalmazás-feladatok üzembe helyezése
A Container Apps azd mellett az Azure Container App Jobs (Microsoft.App/jobs) üzembe helyezését is támogatja. A Tárolóalkalmazás-feladatok olyan tevékenységekre vannak kialakítva, amelyek befejezésig futnak, például kötegelt feldolgozásra, ütemezett feladatokra vagy eseményvezérelt munkákra.
Megjegyzés:
A Container App Jobs azonos host: containerapp beállítást használja azure.yaml-ban/-ben. Nincs szükség új gazdagéptípusra. A Bicep-sablon meghatározza, hogy az általad meghatározott erőforrástípus alapján azd konténeralkalmazást vagy konténeralkalmazás-feladatot létesít-e.
Hogyan működik?
Amikor azd felfedez egy feladaterőforrást, amely a következő címkével azd-service-namevan megjelölve:
- Létrehozza és leküldi a Docker-rendszerképet az Azure Container Registrybe (ugyanaz, mint a Container Apps).
- Frissíti a feladat tárolórendszerképét a Container App Jobs API meghívásával a Container Apps API helyett.
- Üres végpontokat ad vissza, mert a feladatok nem rendelkeznek bejövő forgalommal.
Tárolóalkalmazás-feladat üzembe helyezésének konfigurálása
Adja meg a
azure.yamlfeladatszolgáltatás fájlját. Használja ahost: containerappéslanguage: docker:name: myapp services: job: host: containerapp language: docker project: ./src/job docker: path: ./Dockerfile context: .Hozzon létre egy Bicep-modult, amely kiépít egy
Microsoft.App/jobserőforrást. Címkézze fel az erőforrástazd-service-name, hogyazdfelfedezhesse azt. A paraméterek és a meglévő erőforráshivatkozások (tárolóregisztrációs adatbázis, felügyelt környezet, identitás) ugyanazt a mintát követik, mint a Container Apps fenti példái: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}': {} } } }Fontos
A
azd-service-namecímke értékének meg kell egyeznie a fájlban szereplőazure.yamlszolgáltatásnévvel. Ezzel aazdcímkével társítja a kiépített erőforrást a szolgáltatáshoz.Futtassa a
azd upa kiépítéshez és üzembe helyezéséhez. A parancssori felület automatikusan észleli, hogy a címkézett erőforrás tárolóalkalmazás-feladat, és ennek megfelelően kezeli az üzembe helyezést.
A Container Apps főbb eltérései
| Jellemző | Container Apps | Tárolóalkalmazás-feladatok |
|---|---|---|
| Erőforrás típusa | Microsoft.App/containerApps |
Microsoft.App/jobs |
| Bejövő/végpontok | HTTP-bejövő forgalom támogatása | Nincs bejövő forgalom (üres végpontok) |
| Végrehajtási modell | Hosszan futó szolgáltatások | Befejezésig futó feladatok |
| Eseményindító-típusok | Kérelemalapú | Manuális, ütemezett vagy eseményvezérelt |
Hoszt beállítása a következőben: azure.yaml |
host: containerapp |
host: containerapp |