Oktatóanyag: Buildelés és üzembe helyezés forráskódból az Azure Container Appsbe

Ez a cikk bemutatja, hogyan hozhat létre és helyezhet üzembe alkalmazásokat az Azure Container Appsben a számítógépen található forráskódból az ön által előnyben részesített programozási nyelven.

Ebben az oktatóanyagban a következőket fogja elkönyvelni:

  • Hozzon létre egy egyszerű webalkalmazást.
  • Hozzon létre egy társított Dockerfile-fájlt az alkalmazáshoz.
  • Hozzon létre egy képet a lefordított kódból, és küldje el egy tárolóregisztrációs adatbázisba.
  • Felügyelt identitással biztonságosan elérheti a tárolóregisztrációs adatbázist.
  • Helyezze üzembe a tárolót az Azure Container Appsben.
  • Tekintse meg az alkalmazást egy böngészőben az üzembe helyezés ellenőrzéséhez.

Előfeltételek

A projekt végrehajtásához a következő elemekre van szüksége:

Követelmény Utasítások
Azure-fiók Ha nem rendelkezik ilyen fiókkal, hozzon létre ingyenes fiókot. A folytatáshoz az Azure-előfizetés közreműködői vagy tulajdonosi engedélyére van szüksége.

Részletekért tekintse meg az Azure-szerepkörök hozzárendelését az Azure Portalon .
Azure CLI Telepítse az Azure CLI-t , vagy frissítsen a legújabb verzióra. Az Azure Developer CLI (azd parancsok) az Azure CLI-n keresztül érhetők el.

A választott nyelvtől függően előfordulhat, hogy telepítenie kell a megfelelő futtatókörnyezetet, az SDK-t és más függőségeket is.

Telepítse a .NET SDK-t.

A helyi alkalmazás létrehozása

Az alábbi lépések az Azure Container Appsben üzembe helyezendő mintaalkalmazás létrehozásához szükséges kódot és függőségeket mutatják be.

Feljegyzés

Ha a felsoroltaktól eltérő nyelvet szeretne használni, írja be a következő kérdést az előnyben részesített AI-modellbe.

A kérés elküldése előtt cserélje le <LANGUAGE> a kívánt nyelvre.

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. 
  1. Hozza létre és futtassa a forráskódot.

    Hozzon létre egy új C#-projektet.

    dotnet new webapp --name MyAcaDemo --language C#
    

    Váltson a MyAcaDemo mappára.

    cd MyAcaDemo
    

    Nyisson meg Program.cs egy kódszerkesztőben, és cserélje le a tartalmat a következő kódra.

    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");
                });
    }
    

    Az osztály ezzel a Program kóddal való implementálása létrehozza egy webalkalmazás alapját. Ezután hozzon létre egy osztályt, amely felelős egy weblap válaszként való visszaadásáért.

    Ugyanabban a mappában hozzon létre egy új, elnevezett Startup.cs fájlt, és írja be a következő kódot.

    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!");
                });
            });
        }
    }
    

    Most, amikor kérést intéz a webalkalmazáshoz, a "„Helló világ!” alkalmazás!" szöveg lesz visszaadva. Ha ellenőrizni szeretné, hogy a kód megfelelően fut-e a helyi gépen, hozza létre a projektet a kiadási konfigurációban.

    dotnet build -c Release
    

    Ezután futtassa az alkalmazást annak ellenőrzéséhez, hogy a kód megfelelően van-e implementálva.

    dotnet run --configuration Release
    

    Miután ellenőrizte, hogy az alkalmazás a várt módon működik-e, leállíthatja a helyi kiszolgálót, és továbbléphet egy Docker-fájl létrehozására, hogy üzembe helyezhesse az alkalmazást a Container Appsben.

  2. A MyAcaDemo mappában hozzon létre egy nevű Dockerfile fájlt, és adja hozzá a következő tartalmat.

    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"]
    

    Most, hogy elkészült a kód és a Dockerfile, üzembe helyezheti az alkalmazást az Azure Container Appsben.

Azure-erőforrások létrehozása

  1. Jelentkezzen be az Azure-ba a parancssori felületről a következő paranccsal. A hitelesítési folyamat befejezéséhez mindenképpen kövesse az összes kérést.

    az login
    
  2. Telepítse vagy frissítse az Azure Cli Azure Container Apps-bővítményét.

    az extension add --name containerapp --upgrade
    

    Feljegyzés

    Ha a parancsok futtatásakor az containerapp hibaüzenetet kap a hiányzó paraméterekről, győződjön meg arról, hogy telepítve van az Azure Container Apps bővítmény legújabb verziója.

  3. Most, hogy az Azure CLI beállítása befejeződött, definiálhat környezeti változókat.

    A következő parancs futtatása előtt tekintse át a megadott értékeket.

    A hely az USA középső régiójaként van konfigurálva, de tetszés szerint az Önhöz legközelebbi helyre válthat.

    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"
    

    A mydemoregistry$(openssl rand -hex 4) parancs létrehoz egy véletlenszerű sztringet a tárolóregisztrációs adatbázis neveként. A beállításjegyzék nevének globálisan egyedinek kell lennie, ezért ez a sztring segít a parancsok sikeres futtatásában.

  4. Hozzon létre egy erőforráscsoportot a tárolóalkalmazás üzembe helyezéséhez kapcsolódó szolgáltatások rendszerezéséhez.

    az group create \
      --name $RESOURCE_GROUP \
      --location $LOCATION \
      --output none
    
  5. Hozzon létre egy felhasználó által hozzárendelt felügyelt identitást , és kérje le az azonosítóját az alábbi parancsokkal.

    Először hozza létre a felügyelt identitást.

    az identity create \
        --name $IDENTITY_NAME \
        --resource-group $RESOURCE_GROUP \
        --output none
    

    Most állítsa be az identitásazonosítót egy változóra későbbi használatra.

    IDENTITY_ID=$(az identity show \
      --name $IDENTITY_NAME \
      --resource-group $RESOURCE_GROUP \
      --query id \
      --output tsv)
    
  6. Hozzon létre egy Container Apps-környezetet az alkalmazás üzemeltetéséhez az alábbi paranccsal.

    az containerapp env create \
        --name $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION \
        --mi-user-assigned $IDENTITY_ID \
        --output none
    
  7. Hozzon létre egy Azure Container Registry-példányt (ACR) az erőforráscsoportban. A beállításjegyzék tárolja a tárolórendszerképet.

    az acr create \
      --resource-group $RESOURCE_GROUP \
      --name $REGISTRY_NAME \
      --sku Basic \
      --output none
    
  8. Rendelje hozzá a felhasználó által hozzárendelt felügyelt identitást a tárolóregisztrációs adatbázispéldányhoz az alábbi paranccsal.

    az acr identity assign \
      --identities $IDENTITY_ID \
      --name $REGISTRY_NAME \
      --resource-group $RESOURCE_GROUP \
      --output none
    

A rendszerkép létrehozása és leküldése egy beállításjegyzékbe

Hozza létre és küldje le a tárolórendszerképet a tárolóregisztrációs adatbázispéldányba az alábbi paranccsal.

az acr build \
    -t $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" \
    -r $REGISTRY_NAME .

Ez a parancs a címkét helloworld alkalmazza a tárolórendszerképre.

Tárolóalkalmazás létrehozása

Hozza létre a tárolóalkalmazást a következő paranccsal.

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

Ez a parancs hozzáadja a szerepkört a acrPull felhasználó által hozzárendelt felügyelt identitáshoz, így lekérheti a lemezképeket a tárolóregisztrációs adatbázisból.

Az alábbi táblázat a parancs által használt paramétereket ismerteti.

Paraméter Érték Leírás
name $CONTAINER_APP_NAME A tárolóalkalmazás neve.
resource-group $RESOURCE_GROUP Az az erőforráscsoport, amelyben a tárolóalkalmazás üzembe van helyezve.
environment $ENVIRONMENT A környezet, amelyben a tárolóalkalmazás fut.
image $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" Az üzembe helyezendő tárolórendszerkép, beleértve a beállításjegyzék nevét és címkéjét.
target-port 8080 Megfelel annak a portnak, amelyet az alkalmazás a kérelmeket figyel.
ingress external A tárolóalkalmazást elérhetővé teszi a nyilvános internetről.
user-assigned $IDENTITY_ID A tárolóalkalmazás felhasználó által hozzárendelt felügyelt identitása.
registry-identity registry-identity A tárolóregisztrációs adatbázis eléréséhez használt identitás.
registry-server $REGISTRY_NAME.azurecr.io A tárolóregisztrációs adatbázis kiszolgálócíme.
query properties.configuration.ingress.fqdn A kimenetet csak az alkalmazás teljes tartománynevére (FQDN) szűri.

Miután ez a parancs befejeződött, visszaadja az új webalkalmazás URL-címét.

Az üzembe helyezés ellenőrzése

Másolja az alkalmazás URL-címét egy webböngészőbe. A tárolóalkalmazás elindítása után „Helló világ!” alkalmazás!.

Mivel az alkalmazás első alkalommal érhető el, eltarthat néhány percig, amíg az alkalmazás választ ad vissza.

Az erőforrások eltávolítása

Ha nem fogja használni az oktatóanyagban létrehozott Azure-erőforrásokat, egyetlen paranccsal eltávolíthatja őket. A parancs futtatása előtt az oktatóanyag-sorozat egy következő lépése bemutatja, hogyan módosíthatja a kódot, és frissítheti az alkalmazást az Azure-ban.

Ha végzett, és el szeretné távolítani az oktatóanyagban létrehozott összes Azure-erőforrást, törölje az erőforráscsoportot az alábbi paranccsal.

az group delete --name aca-demo

Tipp.

Problémákat tapasztal? Tudassa velünk a GitHubon, ha megnyit egy hibát az Azure Container Apps adattárában.

Következő lépések

A következő lépésben megtudhatja, hogyan frissítheti a létrehozott tárolóalkalmazást.