Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Cet article vous montre comment générer et déployer une application sur Azure Container Apps à partir du code source sur votre ordinateur dans votre langage de programmation préféré.
Dans ce tutoriel, vous allez :
- Créez une application web simple.
- Créez un fichier Dockerfile associé pour votre application.
- Créez une image à partir du code compilé et l’envoyez (push) à un registre de conteneurs.
- Utilisez une identité managée pour accéder de façon sécurisée à votre registre de conteneurs.
- Déployez votre conteneur sur Azure Container Apps.
- Affichez votre application dans un navigateur pour vérifier le déploiement.
Prérequis
Pour mener à bien ce projet, vous avez besoin des éléments suivants :
| Condition requise | Instructions |
|---|---|
| Compte Azure | Si vous n’en avez pas un, créez un compte gratuitement. Vous avez besoin de l’autorisation Contributeur ou Propriétaire sur l’abonnement Azure pour continuer. Pour plus d’informations, consultez Attribuer des rôles Azure à l’aide du portail Azure. |
| Azure CLI | Installez Azure CLI ou procédez à une mise à niveau vers la dernière version. Azure Developer CLI (commandes azd) est disponible via Azure CLI. |
En fonction de votre choix de langage, vous devrez peut-être également installer le runtime, le SDK et autres dépendances correspondants.
Installez le Kit de développement logiciel (SDK) pour .NET.
Créer l’application locale
Les étapes suivantes montrent le code et les dépendances nécessaires pour générer un exemple d’application à déployer sur Azure Container Apps.
Remarque
Si vous souhaitez utiliser un autre langage que ceux qui sont répertoriés, entrez le prompt suivant dans le modèle IA de votre choix.
Avant d’envoyer le prompt, remplacez <LANGUAGE> par le langage que vous voulez.
Generate the simplest possible "hello world" web server in idiomatic <LANGUAGE>.
Make sure to include any dependencies required for the application to run locally and in production.
Créez et exécutez votre code source.
Créez un nouveau projet C#.
dotnet new webapp --name MyAcaDemo --language C#Accédez au dossier MyAcaDemo.
cd MyAcaDemoOuvrez
Program.csdans un éditeur de code et remplacez le contenu par le code suivant.public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); webBuilder.UseUrls("http://*:8080"); }); }L’implémentation de la classe
Programavec ce code crée la base d’une application web. Ensuite, créez une classe chargée de retourner une page web comme réponse.Dans le même dossier, créez un fichier nommé
Startup.cset entrez le code suivant.public class Startup { public void ConfigureServices(IServiceCollection services) { } public void Configure(IApplicationBuilder app) { app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapGet("/", async context => { await context.Response.WriteAsync("Hello World!"); }); }); } }À présent, lorsqu’une demande est adressée à votre application web, le texte « Hello World! » est retourné. Pour vérifier que votre code s’exécute correctement sur votre ordinateur local, générez votre projet dans la configuration Release.
dotnet build -c ReleaseEnsuite, exécutez votre application pour vérifier que votre code est implémenté correctement.
dotnet run --configuration ReleaseUne fois que vous avez vérifié que l’application fonctionne comme prévu, vous pouvez arrêter le serveur local et passer à la création d’un fichier Dockerfile afin de pouvoir déployer l’application sur Container Apps.
Dans le dossier MyAcaDemo, créez un fichier appelé
Dockerfileet ajoutez le contenu suivant.FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src COPY . . RUN dotnet publish -c Release -o /app/publish FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final WORKDIR /app COPY --from=build /app/publish . EXPOSE 8080 ENTRYPOINT ["dotnet", "MyAcaDemo.dll"]Maintenant que vous avez votre code et un fichier Dockerfile prêt, vous pouvez déployer votre application sur Azure Container Apps.
Créer des ressources Azure
Connectez-vous à Azure depuis l’interface de ligne de commande en utilisant la commande suivante. Pour effectuer le processus d’authentification, veillez à suivre toutes les invites.
az loginInstallez ou mettez à jour l’extension Azure Container Apps pour l’interface Azure CLI.
az extension add --name containerapp --upgradeRemarque
Si vous recevez des erreurs concernant des paramètres manquants lorsque vous exécutez des commandes
az containerapp, vérifiez que la dernière version de l’extension Azure Container Apps est installée.À présent que votre configuration Azure CLI est terminée, vous pouvez définir un ensemble de variables d’environnement.
Avant d’exécuter la commande suivante, passez en revue les valeurs fournies.
La région est configurée avec USA Centre, mais vous pouvez en définir une plus proche si vous préférez.
LOCATION="CentralUS" RESOURCE_GROUP="my-demo-group" IDENTITY_NAME="my-demo-identity" ENVIRONMENT="my-demo-environment" REGISTRY_NAME="mydemoregistry$(openssl rand -hex 4)" CONTAINER_APP_NAME="my-demo-app"La commande
mydemoregistry$(openssl rand -hex 4)génère une chaîne aléatoire à utiliser comme nom de registre de conteneurs. Les noms de registre doivent être globalement uniques, donc cette chaîne permet de s’assurer que vos commandes s’exécutent correctement.Créez un groupe de ressources pour organiser les services liés au déploiement de votre application de conteneur.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --output noneCréez une identité managée affectée par l’utilisateur et obtenez son ID en utilisant les commandes suivantes.
Créez d’abord l’identité managée.
az identity create \ --name $IDENTITY_NAME \ --resource-group $RESOURCE_GROUP \ --output noneMaintenant, définissez l’identificateur d’identité dans une variable pour l’utiliser ultérieurement.
IDENTITY_ID=$(az identity show \ --name $IDENTITY_NAME \ --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)Créez un environnement Container Apps pour héberger votre application à l’aide de la commande suivante.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --mi-user-assigned $IDENTITY_ID \ --output noneCréez une instance Azure Container Registry (ACR) dans votre groupe de ressources. Le registre stocke votre image conteneur.
az acr create \ --resource-group $RESOURCE_GROUP \ --name $REGISTRY_NAME \ --sku Basic \ --output noneAttribuez votre identité managée affectée par l’utilisateur à votre instance de registre de conteneurs avec la commande suivante.
az acr identity assign \ --identities $IDENTITY_ID \ --name $REGISTRY_NAME \ --resource-group $RESOURCE_GROUP \ --output none
Générer et envoyer (push) l’image à un registre
Générez et envoyez (push) votre image conteneur à votre instance de registre de conteneurs avec la commande suivante.
az acr build \
-t $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" \
-r $REGISTRY_NAME .
Cette commande applique la balise helloworld à votre image conteneur.
Créer votre application conteneur
Créez votre application conteneur avec la commande suivante.
az containerapp create \
--name $CONTAINER_APP_NAME \
--resource-group $RESOURCE_GROUP \
--environment $ENVIRONMENT \
--image $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" \
--target-port 8080 \
--ingress external \
--user-assigned $IDENTITY_ID \
--registry-identity $IDENTITY_ID \
--registry-server $REGISTRY_NAME.azurecr.io \
--query properties.configuration.ingress.fqdn
Cette commande ajoute le rôle acrPull à votre identité managée affectée par l’utilisateur afin qu’elle puisse extraire des images de votre registre de conteneurs.
Le tableau suivant décrit les paramètres utilisés par cette commande.
| Paramètre | active | Description |
|---|---|---|
name |
$CONTAINER_APP_NAME |
Nom de votre application conteneur. |
resource-group |
$RESOURCE_GROUP |
Groupe de ressources dans lequel votre application conteneur est déployée. |
environment |
$ENVIRONMENT |
Environnement dans lequel s’exécute votre application conteneur. |
image |
$REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" |
Image conteneur à déployer, notamment le nom et l’étiquette du registre. |
target-port |
8080 |
Correspond au port que votre application écoute pour les demandes. |
ingress |
external |
Rend votre application conteneur accessible à partir de l’Internet public. |
user-assigned |
$IDENTITY_ID |
Identité managée affectée par l’utilisateur pour votre application conteneur. |
registry-identity |
registry-identity |
Identité utilisée pour accéder au registre de conteneurs. |
registry-server |
$REGISTRY_NAME.azurecr.io |
Adresse du serveur de votre registre de conteneurs. |
query |
properties.configuration.ingress.fqdn |
Filtre la sortie sur le nom de domaine complet (FQDN) de l’application uniquement. |
Une fois cette commande terminée, elle retourne l’URL de votre nouvelle application web.
Vérifier le déploiement
Copiez l’URL de l’application dans un navigateur web. Une fois l’application conteneur démarrée, elle retourne Hello World!.
Étant donné qu’il s’agit du premier accès à l’application, celle-ci peut prendre un peu de temps avant de retourner une réponse.
Nettoyer les ressources
Si vous n’allez pas utiliser les ressources Azure créées dans ce tutoriel, vous pouvez les supprimer avec une seule commande. Avant d’exécuter la commande, il existe une autre étape dans cette série de tutoriels qui vous montre comment apporter des modifications à votre code et mettre à jour votre application dans Azure.
Si vous avez terminé et souhaitez supprimer toutes les ressources Azure créées dans ce tutoriel, supprimez le groupe de ressources avec la commande suivante.
az group delete --name aca-demo
Conseil
Vous rencontrez des problèmes ? Faites-le nous savoir sur GitHub en ouvrant un problème dans le dépôt Azure Container Apps.
Étapes suivantes
Poursuivez votre apprentissage en découvrant comment mettre à jour l’application conteneur que vous avez créée.