Köra en anpassad container i Azure

Azure App Service har fördefinierade programstackar i Windows som ASP.NET eller Node.js, som körs i IIS. De förkonfigurerade programstackarna låser dock operativsystemet och förhindrar åtkomst på låg nivå. Anpassade Windows-containrar har inte dessa begränsningar och gör det möjligt för utvecklare att anpassa containrarna fullständigt och ge containerprogram fullständig åtkomst till Windows funktioner.

Den här snabbstarten visar hur du distribuerar en ASP.NET-app i en Windows-avbildning för att Azure Container Registry från Visual Studio. Du kör appen i en anpassad container i Azure App Service.

Förutsättningar

För att slutföra den här kursen behöver du:

  • Installera Docker för Windows.
  • Växla Docker för att köra Windows-containrar.
  • Installera Visual Studio 2022 med arbetsbelastningarna ASP.NET webbutveckling och Azure-utveckling. I Visual Studio 2022 Community .NET Framework projekt- och objektmallar med arbetsbelastningen ASP.NET och webbutveckling. Om du redan har installerat Visual Studio 2022:
    • Installera de senaste uppdateringarna i Visual Studio genom att välja Hjälp sök efter > uppdateringar.
    • Lägg till arbetsbelastningar i Visual Studio genom att välja Verktyg Hämta verktyg > och funktioner.

Skapa en ASP.NET-webbapp

Skapa en ASP.NET webbapp genom att följa dessa steg:

  1. Öppna Visual Studio och välj sedan Skapa ett nytt projekt.

  2. I Skapa ett nytt projekt söker du upp och ASP.NET ett webbprogram (.NET Framework) för C# och väljer sedan Nästa.

    Skapa ett nytt projekt

  3. I Konfigurera det nya projektet går du Project namnet och ger programmet namnet myfirstazurewebapp. Under Ramverk väljer du .NET Framework 4.8 och sedan Skapa.

    Konfigurera webbappsprojektet

  4. Du kan distribuera alla typer av ASP.NET-webbappar till Azure. För den här snabbstarten väljer du MVC-mallen.

  5. Under Autentisering väljer du Ingen. Under Avancerat väljer du Docker-stöd och avmarkerar Konfigurera för HTTPS. Välj Skapa.

    Skapa ASP.NET webbapp

  6. Om filen Dockerfile inte öppnas automatiskt öppnar du den från Solution Explorer.

  7. Du behöver en överordnad avbildning som stöds. Ändra den överordnade avbildningen genom att ersätta raden FROM med följande kod och spara filen:

    FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
    
  8. På Visual Studio väljer du Felsök > Starta utan felsökning för att köra webbappen lokalt.

    Kör appen lokalt

Publicera till Azure Container Registry

  1. I Solution Explorer högerklickar du på projektet myfirstazurewebapp och väljer Publicera.

  2. I Mål väljer du Docker Container Registry och klickar sedan på Nästa.

    Välj Docker-Container Registry

  3. I Specifikt mål väljer du Azure Container Registry och klickar sedan på Nästa.

    Publicera från projektöversiktssidan

  4. I Publicera kontrollerar du att rätt prenumeration har valts. I Containerregister väljer du knappen för att skapa en ny + Azure Container Registry.

    Skapa nya Azure Container Registry

  5. I Skapa ny kontrollerar du att rätt prenumeration har valts. Under Resursgrupp väljer du Ny och skriver myResourceGroup som namn och klickar på OK. Under SKU väljer du Grundläggande. Under Registerplats väljer du en plats för registret och sedan Skapa.

    Azure Container Registry information

  6. Under Publicera under Container Registry du det register som du skapade och väljer sedan Slutför.

    Välj befintlig Azure Container Registry

    Vänta tills distributionen har slutförts. På sidan Publicera visas nu namnet på lagringsplatsen. Välj kopieringsknappen för att kopiera lagringsplatsens namn för senare.

    Skärmbild som visar namnet på lagringsplatsen.

Skapa en Windows-containerapp

  1. Logga in på Azure-portalen.

  2. Välj Skapa en resurs längst upp till vänster i Azure Portal.

  3. Under Populära tjänster väljer du Skapa under Webbapp.

  4. I Skapa webbapp väljer du din prenumeration och en resursgrupp. Du kan skapa en ny resursgrupp om det behövs.

  5. Ange ett appnamn, till exempel win-container-demo. Välj Docker-container för Publicera Windows för Operativsystem. Välj Nästa: Docker för att fortsätta.

    Skapa en Web App for Containers

  6. För Bildkälla väljer du Docker Hub och för Bild och tagg anger du lagringsplatsens namn som du kopieradei Publicera till Azure Container Registry .

    Konfigurera att du är en Web App for Containers

    Om du har en anpassad avbildning någon annanstans för ditt webbprogram, till exempel i Azure Container Registry eller på en annan privat lagringsplats, kan du konfigurera den här.

  7. Välj Granska och skapa och sedan Skapa och vänta tills Azure har skapat de nödvändiga resurserna.

Bläddra till containerappen

När Azure-åtgärden är klar visas ett meddelande.

Distributionen lyckades

  1. Klicka på Gå till resurs.

  2. I översikten över den här resursen följer du länken bredvid URL:en.

En ny webbläsarsida öppnas på följande sida:

Windows containerappen startar

Vänta några minuter och försök igen, tills du kommer till standardvälkomstsidan för ASP.NET:

Windows containerapp som körs

Grattis! Du kör din första anpassade Windows-container i Azure App Service.

Se containerns startloggar

Det kan ta lite tid för Windows-containern att läsas in. Om du vill se förloppet går du till följande URL genom <app_name> att ersätta med namnet på din app.

https://<app_name>.scm.azurewebsites.net/api/logstream

De strömmade loggarna ser ut så här:

2018-07-27T12:03:11  Welcome, you are now connected to log-streaming service.
27/07/2018 12:04:10.978 INFO - Site: win-container-demo - Start container succeeded. Container: facbf6cb214de86e58557a6d073396f640bbe2fdec88f8368695c8d1331fc94b
27/07/2018 12:04:16.767 INFO - Site: win-container-demo - Container start complete
27/07/2018 12:05:05.017 INFO - Site: win-container-demo - Container start complete
27/07/2018 12:05:05.020 INFO - Site: win-container-demo - Container started successfully

Uppdatera lokalt och omdistribuera

  1. I Visual Studio öppnar du Views Home > > Index.cshtml i Solution Explorer.

  2. Leta reda på HTML-taggen <div class="jumbotron"> längst upp på sidan och ersätt hela elementet med följande kod:

    <div class="jumbotron">
        <h1>ASP.NET in Azure!</h1>
        <p class="lead">This is a simple app that we've built that demonstrates how to deploy a .NET app to Azure App Service.</p>
    </div>
    
  3. Om du vill distribuera om till Azure högerklickar du på projektet myfirstazurewebapp i Solution Explorer väljer Publicera.

  4. På publiceringssidan väljer du Publicera och väntar tills publiceringen ska slutföras.

  5. Om du vill uppmana App Service att hämta den nya avbildningen från Docker Hub startar du om appen. På appsidan i portalen klickar du på Starta om > Ja.

    Starta om webbapp i Azure

Bläddra till container igen. När du uppdaterar webbsidan ska appen återgå till sidan ”Startar” först och sedan visa den uppdaterade igen efter några minuter.

Uppdaterad webbapp i Azure

Nästa steg

Eller så kan du kolla in andra resurser:

App Service på Linux tillhandahåller fördefinierade programstackar i Linux med stöd för språk som .NET, PHP, Node.js och andra. Du kan också använda en anpassad Docker-avbildning för att köra din webbapp på en programstack som inte redan har definierats i Azure. Den här snabbstarten visar hur du distribuerar en avbildning från en Azure Container Registry (ACR) till App Service.

Förutsättningar

Skapa ett containerregister

Den här snabbstarten Azure Container Registry som val av register. Du kan använda andra register, men stegen kan skilja sig något.

Skapa ett containerregister genom att följa anvisningarna i Snabbstart: Skapa ett privat containerregister med hjälp av Azure Portal.

Viktigt

Se till att ange alternativet Administratörsanvändare till Aktivera när du skapar Azure-containerregistret. Du kan också ange den från avsnittet Åtkomstnycklar på registersidan i Azure Portal. Den här inställningen krävs för App Service åtkomst. Information om hanterade identiteter finns i Självstudie om att distribuera från ACR.

Logga in

  1. Starta Visual Studio Code.

  2. Välj Azure-logotypen i aktivitetsfältet,navigera till APP SERVICE Explorer och välj sedan Logga in på Azure och följ instruktionerna.

    logga in på Azure

  3. I statusfältet längst ned kontrollerar du e-postadressen för ditt Azure-konto. Din prenumeration bör visas i APP SERVICE Explorer.

  4. I aktivitetsfältet väljer du Docker-logotypen. I REGISTRIES-utforskaren kontrollerar du att containerregistret som du skapade visas.

    Skärmbild som visar registervärdet med Azure expanderat.

Kontrollera krav

Kontrollera att du har Docker installerat och igång. Följande kommando visar Docker-versionen om den körs.

docker --version

Skapa och skapa avbildning

  1. I Visual Studio Code öppnar du en tom mapp och lägger till en fil med namnet Dockerfile . I Dockerfile klistrar du in innehållet baserat på önskat språkramverk:
FROM mcr.microsoft.com/appsvc/dotnetcore:lts

ENV PORT 8080
EXPOSE 8080

ENV ASPNETCORE_URLS "http://*:${PORT}"

ENTRYPOINT ["dotnet", "/defaulthome/hostingstart/hostingstart.dll"]

I den här Dockerfile är den överordnade avbildningen en av de inbyggda .NET-containrarna i App Service. Källfilerna för den finns på lagringsplatsen Azure-App-Service/ImageBuilder GitHub under GenerateDockerFiles/dotnetcore. Dess Dockerfile kopierar en enkel .NET-app till /defaulthome/hostingstart . Din Dockerfile startar helt enkelt appen.

  1. Öppna kommandopalettenoch skriv Docker Images: Build Image. Skriv Retur för att köra kommandot.

  2. I rutan avbildningstagg anger du den tagg som du vill använda i följande format: , där är namnet <acr-name>.azurecr.io/<image-name>/<tag> <acr-name> på det containerregister som du skapade. Tryck på Retur.

  3. När avbildningen har skapats klickar du på Uppdatera överst i IMAGES-utforskaren och kontrollerar att avbildningen har skapats.

    Skärmbild som visar den skapade avbildningen med tagg.

Distribuera till containerregister

  1. Klicka på Docker-ikonen i aktivitetsfältet. I IMAGES-utforskaren hittar du den avbildning som du nyss skapade.

  2. Expandera bilden, högerklicka på den tagg som du vill använda och klicka på Push (Pusha).

  3. Kontrollera att bildtaggen börjar med <acr-name>.azurecr.io och tryck på Retur.

  4. När Visual Studio Code har push-skickats avbildningen till containerregistret klickar du på Uppdatera överst i registerutforskaren och kontrollerar att avbildningen har push-skickats.

    Skärmbild som visar avbildningen som distribuerats till Azure-containerregistret.

Distribuera till App Service

  1. I REGISTRIES Explorer expanderar du avbildningen, högerklickar på taggen och klickar på Deploy image to Azure App Service.
  2. Följ anvisningarna för att välja en prenumeration, ett globalt unikt appnamn, en resursgrupp och en App Service plan. Välj B1 Basic som prisnivå och en region nära dig.

Efter distributionen är din app tillgänglig på http://<app-name>.azurewebsites.net .

En resursgrupp är en namngiven samling med alla programresurser i Azure. En resursgrupp kan till exempel innehålla en referens till en webbplats, en databas och en Azure-funktion.

En App Service plan definierar de fysiska resurser som ska användas som värd för din webbplats. Den här snabbstarten använder en grundläggande värdplan för Linux-infrastruktur, vilket innebär att webbplatsen kommer att finnas på en Linux-dator tillsammans med andra webbplatser. Om du börjar med Basic-planen kan du använda Azure Portal för att skala upp så att din är den enda webbplatsen som körs på en dator. Prisinformation finns i App Service priser.

Bläddra på webbplatsen

Panelen Utdata visar status för distributionsåtgärder. När åtgärden har slutförts klickar du på Öppna webbplats i popup-meddelandet för att öppna webbplatsen i webbläsaren.

Nästa steg

Grattis, du har slutfört den här snabbstarten.

Appen App Service hämtar från containerregistret varje gång den startas. Om du återskapar avbildningen behöver du bara push-skicka den till containerregistret, så hämtar appen den uppdaterade avbildningen när den startas om. Om du vill be din app att hämta den uppdaterade avbildningen direkt startar du om den.

Andra Azure-tillägg: