Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure Developer CLI (azd) prend en charge le déploiement des Azure Container Apps et des Azure Container App Jobs. Pour Azure Container Apps, azd propose deux stratégies de déploiement :
- Stratégie basée sur l’image. Sépare les mises à jour de configuration des applications conteneur des déploiements d’images.
- Stratégie basée sur la révision. Combine les deux en un seul déploiement et prend en charge les modèles de déploiement avancés.
Les sections suivantes présentent les deux stratégies, ainsi que la procédure de déploiement des Container App Jobs.
Déployer sur Container Apps express (préversion)
azdprend en charge les déploiements basés sur des images pour Azure Container Apps express (préversion). Utilisez l’hôte existant containerapp dans azure.yaml; vous n’avez pas besoin d’un type d’hôte distinct pour express :
Important
La prise en charge simplifiée de Container Apps nécessite la version 1.35.0-beta.1 ou ultérieure de azd.
services:
web:
host: containerapp
image: mcr.microsoft.com/azuredocs/containerapps-helloworld:latest
docker:
imagePassthrough: true
Dans votre infrastructure, créez un environnement managé avec properties.environmentMode défini sur Express. L’application conteneur doit référencer cet environnement et inclure une azd-service-name balise qui correspond au nom du service dans azure.yaml:
resource containerAppsEnvironment 'Microsoft.App/managedEnvironments@2026-07-01' = {
name: 'cae-${environmentName}'
location: location
properties: {
environmentMode: 'Express'
}
}
Définissez la ressource environmentId avec Microsoft.App/containerApps défini sur containerAppsEnvironment.id. Ajoutez une azd-service-name balise avec la valeur web pour qu’elle corresponde au nom du service dans azure.yaml.
Pendant azd deploy, azd détecte le mode express de l’environnement parent et met à jour l’image conteneur sans définir un suffixe de révision personnalisé ou des pondérations de trafic. Express effectue automatiquement une mise à jour progressive sur une seule révision.
Utilisez la stratégie de déploiement basée sur l’image pour Express. La stratégie basée sur la révision n'adapte pas votre fichier Bicep de déploiement pour express, et express ne prend pas en charge plusieurs révisions ni le fractionnement du trafic. Avant de définir votre infrastructure, passez en revue la disponibilité et les limitations actuelles des fonctionnalités express.
Stratégie de déploiement basée sur l’image
Dans cette stratégie, la configuration de l’application conteneur est créée et mise à jour pendant azd provision, tandis que l’image conteneur est mise à jour pendant azd deploy.
- La définition de l’application conteneur (ressources, variables d’environnement, sondes d’intégrité, et ainsi de suite) réside dans un module Bicep appliqué lors de l’approvisionnement.
- Seule la référence d’image conteneur (
containers[0].image) change pendant le déploiement.
Comportement de révision
Chaque modification apportée à la configuration de l’application ou à l’image déclenche une nouvelle révision :
| Étape | Command | Applique les modifications à | Remarques |
|---|---|---|---|
| 1 | azd provision |
Variables d’environnement, ressources, montages, sondes, équilibreurs de charge | Crée une révision |
| 2 | azd deploy |
Image conteneur | Crée une autre révision |
Chaque révision alloue des réplicas supplémentaires dans l’environnement Container Apps, ce qui peut temporairement augmenter l’utilisation des ressources et les coûts.
Note
Les modèles de déploiement avancés, tels que blue-green ou canary, ne sont pas pris en charge dans cette stratégie.
Configurer des déploiements basés sur des images
Pour garantir que l'application conteneur existante azd provision soit mise à jour sans écraser la dernière image déployée, effectuez une opération upsert. Ce modèle est implémenté par le module AVM container-app-upsert et se compose de deux étapes :
Dans votre
main.parameters.json, définissez un paramètre qui fait référence à la variableSERVICE_{NAME}_RESOURCE_EXISTSfournie par azd . Cette variable est définie automatiquementazdau moment de l’approvisionnement pour indiquer si la ressource existe déjà.{ "$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}" } } }Dans votre fichier Bicep, référencez le
existsparamètre pour contrôler si l’application conteneur doit être créée ou mise à jour. Lecontainer-app-upsertmodule encapsule cette logique en interne.@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 } }Cette approche permet à
azd provisiond'effectuer un upsert (mettre à jour si la ressource existe, la créer dans le cas contraire) la ressource Container App en toute sécurité, sans vérifications manuelles.Conseil / Astuce
Veillez à ce que le
apiVersiondansazure.yamlcorresponde à la valeurapiVersiondu module Bicep pourMicrosoft.App/containerAppsafin d’éviter toute incohérence.
Stratégie de déploiement basée sur la révision
Dans cette stratégie, la définition et l’image de l’application conteneur sont déployées ensemble pendant azd deploy.
La configuration de l’application conteneur réside dans un module Bicep dédié appliqué pendant le déploiement.
Les modifications apportées aux variables d’environnement, aux images, aux ressources et aux paramètres d’équilibrage de charge sont déployées en tant que révision unique.
Conseil / Astuce
Cette stratégie prend en charge les modèles de déploiement bleu-vert, canary et autres modèles de déploiement avancés.
Configurer des déploiements basés sur le contrôle de version
Définissez le déploiement de l’application conteneur en créant un fichier d'infrastructure pour votre service, par exemple
infra/api.bicep. Vous pouvez définir votre application conteneur à l’aide du module basé sur AVM ou en définissant directement la ressource :@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' } } }Fournissez des paramètres au moment du déploiement en créant un fichier de paramètres (par exemple
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}" } } }Note
SERVICE_API_IMAGE_NAMEest défini dynamiquement pendant le déploiement et ne fait pas partie des sorties de provisionnement.Lorsque vous exécutez
azd deploy, la révision de l’application conteneur est appliquée à l’aide de la définition de ressource ci-dessus.Conseil / Astuce
Transmettez toutes les sorties supplémentaires de
azd provisionen tant que paramètres àazd deploysi votre application conteneur référence d'autres ressources approvisionnées.
Résumé de comparaison
| Aspect | Basé sur l’image | Basé sur la révision |
|---|---|---|
| Commande Mettre à jour | azd provision + azd deploy |
azd deploy uniquement |
| Type de déploiement | Deux révisions | Révision unique |
| Contrôle de déploiement | Géré par azd |
Configurable (bleu-vert, canari) |
| Cas d’utilisation | Environnements simples | Déploiements avancés |
| Emplacement de la définition de la Container App | Bicep lors du provisionnement | Bicep lors du déploiement |
Déployer des Container App Jobs
En plus de Container Apps, azd permet de déployer des jobs Azure Container App (Microsoft.App/jobs). Les Container App Jobs sont conçus pour les tâches qui s’exécutent jusqu’à leur terme, comme le traitement par lots, les tâches planifiées ou les traitements déclenchés par des événements.
Note
Les Container App Jobs utilisent le même paramètre host: containerapp dans azure.yaml. Aucun nouveau type d’hôte n’est requis. Le modèle Bicep détermine si azd provisionne une Container App ou un Container App Job en fonction du type de ressource que vous définissez.
Fonctionnement
Lorsque azd découvre une ressource de travail marquée avec azd-service-name, il :
- Génère et envoie (push) l’image Docker à Azure Container Registry (identique à Container Apps).
- Met à jour l’image conteneur du job en appelant l’API Container App Jobs plutôt que l’API Container Apps.
- Retourne des points de terminaison vides, car les jobs ne disposent d’aucun point d’entrée.
Configurer un déploiement de tâche d’application conteneurisée
Définissez le
azure.yamlfichier de votre service de travail. Utiliserhost: containerappetlanguage: docker:name: myapp services: job: host: containerapp language: docker project: ./src/job docker: path: ./Dockerfile context: .Créez un module Bicep qui provisionne une
Microsoft.App/jobsressource. Étiquetez la ressource avecazd-service-nameafin queazdpuisse la découvrir. Les paramètres et les références de ressources existantes (registre de conteneurs, environnement managé, identité) suivent le même modèle que les exemples Container Apps ci-dessus :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}': {} } } }Important
La
azd-service-namevaleur de balise doit correspondre au nom du service dans votreazure.yamlfichier. Cette balise explique commentazdassocier la ressource provisionnée à votre service.Exécutez
azd uppour provisionner et déployer. L’interface CLI détecte automatiquement que la ressource étiquetée est un travail d’application conteneur et gère le déploiement en conséquence.
Principales différences par rapport à Container Apps
| Aspect | Container Apps | Container App Jobs |
|---|---|---|
| Type de ressource | Microsoft.App/containerApps |
Microsoft.App/jobs |
| Entrée/points de terminaison | Prend en charge l’entrée HTTP | Aucune entrée (points de terminaison vides) |
| Modèle d’exécution | Services fonctionnant sur de longues périodes | Tâches jusqu'à achèvement |
| Types de déclencheurs | Sur demande | Manuel, planifié ou piloté par les événements |
Paramètre d’hôte dans azure.yaml |
host: containerapp |
host: containerapp |
Ressources supplémentaires
- Vue d’ensemble d’Azure Container Apps
- Azure Container Apps vue d’ensemble rapide
- Vue d’ensemble des tâches Azure Container Apps
- Informations de référence sur Bicep d’Azure Container Apps
- Informations de référence sur les Azure Container App Jobs
- Vue d’ensemble de .NET Aspire
- Modèles d’application todo (utilise des images)