Dela via


Distribuera en arbetstjänst till Azure

I den här artikeln får du lära dig hur du distribuerar en .NET Worker-tjänst till Azure. När din worker körs som en Azure Container Instance (ACI) från Azure Container Registry (ACR) kan den fungera som en mikrotjänst i molnet. Det finns många användningsfall för långvariga tjänster och arbetartjänsten finns av den anledningen.

I den här självstudien lär du dig att:

  • Skapa en arbetstjänst.
  • Skapa en containerregisterresurs.
  • Skicka en avbildning till containerregistret.
  • Distribuera som containerinstans.
  • Kontrollera arbetstjänstens funktioner.

Dricks

Alla exempelkällkoden "Arbetare i .NET" finns i exempelwebbläsaren för nedladdning. Mer information finns i Bläddra bland kodexempel: Arbetare i .NET.

Förutsättningar

Skapa ett nytt projekt

Om du vill skapa ett nytt Worker Service-projekt med Visual Studio väljer du Nytt>>filprojekt....I dialogrutan Skapa ett nytt projekt söker du efter "Arbetstjänst" och väljer Mall för Arbetstjänst. Ange önskat projektnamn, välj en lämplig plats och välj Nästa. På sidan Ytterligare information för Target Framework väljer du .NET 5.0och markerar alternativet Aktivera Docker för att aktivera Docker-stöd. Välj önskat Docker-operativsystem.

Om du vill skapa ett nytt Worker Service-projekt med Visual Studio Code kan du köra .NET CLI-kommandon från den integrerade terminalen. Mer information finns i Visual Studio Code: Integrerad terminal.

Öppna den integrerade terminalen dotnet new och kör kommandot och ersätt <Project.Name> med önskat projektnamn.

dotnet new worker --name <Project.Name>

Mer information om kommandot .NET CLI new worker service project finns i dotnet new worker( dotnet new worker).

Om du vill skapa ett nytt Worker Service-projekt med .NET CLI öppnar du din favoritterminal i en arbetskatalog. dotnet new Kör kommandot och ersätt <Project.Name> med önskat projektnamn.

dotnet new worker --name <Project.Name>

Mer information om kommandot .NET CLI new worker service project finns i dotnet new worker( dotnet new worker).

Skapa programmet för att säkerställa att det återställer de beroende paketen och kompileras utan fel.

Om du vill skapa programmet från Visual Studio väljer du F6 eller väljer menyalternativet Skapa>lösning.

Om du vill skapa programmet från Visual Studio Code öppnar du det integrerade terminalfönstret och kör dotnet build kommandot från arbetskatalogen.

dotnet build

Mer information om kompileringskommandot för .NET CLI finns i dotnet build.

Om du vill skapa programmet från .NET CLI kör dotnet build du kommandot från arbetskatalogen.

dotnet build <path/to/project.csproj>

Ange ditt <path/to/project.csproj> värde, vilket är sökvägen till projektfilen som ska skapas. Mer information om kompileringskommandot för .NET CLI finns i dotnet build.

Lägga till Docker-stöd

Om du har markerat kryssrutan Aktivera Docker när du skapar ett nytt Worker-projekt går du vidare till steget Skapa Docker-avbildningen .

Om du inte valde det här alternativet behöver du inte oroa dig – du kan fortfarande lägga till det nu. Högerklicka på projektnoden i Solution Explorer i Visual Studio och välj Lägg till>Docker-support. Du uppmanas att välja ett måloperativsystem. Välj OK med standardvalet för operativsystemet.

Docker File Options

I Visual Studio Code behöver du Docker-tillägget och Azure-kontotilläggetinstallerat. Öppna kommandopaletten och välj alternativet Docker: Lägg till Docker-filer i arbetsytan . Om du uppmanas att välja Programplattform väljer du .NET: Core Console. Om du uppmanas att välja projekt väljer du det Arbetstjänstprojekt som du skapade. När du uppmanas att välja operativsystem väljer du det första operativsystem som visas. När du tillfrågas om du vill inkludera valfria Docker Compose-filer eller inte väljer du Nej.

Docker-stöd kräver en Dockerfile. Den här filen är en uppsättning omfattande instruktioner för att skapa .NET Worker Service som en Docker-avbildning. Dockerfile är en fil utan filnamnstillägg. Följande kod är ett exempel på Dockerfile och bör finnas i rotkatalogen för projektfilen.

Med CLI skapas inte Dockerfile åt dig. Kopiera innehållet till en ny fil med namnet Dockerfile i projektets rotkatalog.

FROM mcr.microsoft.com/dotnet/runtime:8.0 AS base
WORKDIR /app

# Creates a non-root user with an explicit UID and adds permission to access the /app folder
# For more info, please refer to https://aka.ms/vscode-docker-dotnet-configure-containers
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["App.CloudService.csproj", "./"]
RUN dotnet restore "App.CloudService.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "App.CloudService.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "App.CloudService.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "App.CloudService.dll"]

Kommentar

Du måste uppdatera de olika raderna i Dockerfile som refererar till *App.CloudService – ersätt detta med namnet på projektet.

Mer information om de officiella .NET-avbildningarna finns i Docker Hub: .NET Runtime och Docker Hub: .NET SDK.

Skapa Docker-avbildningen

Om du vill skapa Docker-avbildningen måste Docker-motorn köras.

Viktigt!

När du använder Docker Desktop och Visual Studio bör du undvika fel som rör volymdelning – se till att den är aktiverad.

  1. På skärmen Inställningar i Docker Desktop väljer du Delade enheter.
  2. Välj de enheter som innehåller dina projektfiler.

Mer information finns i Felsöka Visual Studio-utveckling med Docker.

Högerklicka på Dockerfile i Solution Explorer och välj Skapa Docker-avbildning. Fönstret Utdata visar och rapporterar kommandots docker build förlopp.

Högerklicka på Dockerfile i Utforskaren och välj Skapa avbildning. När du uppmanas att tagga avbildningen som anger du appcloudservice:latest. Docker-aktivitetsutdataterminalen visas och rapporterar docker build-kommandots förlopp.

Kommentar

Om du inte uppmanas att tagga avbildningen är det möjligt att Visual Studio Code förlitar sig på en befintlig tasks.json. Om taggen som används är oönskad kan du ändra den docker-build genom att uppdatera konfigurationsobjektets dockerBuild/tag värde i matrisen tasks . Överväg följande exempelkonfigurationsavsnitt:

{
  "type": "docker-build",
  "label": "docker-build: release",
  "dependsOn": [
    "build"
  ],
  "dockerBuild": {
    "tag": "appcloudservice:latest",
    "dockerfile": "${workspaceFolder}/cloud-service/Dockerfile",
    "context": "${workspaceFolder}",
    "pull": true
  },
  "netCore": {
    "appProject": "${workspaceFolder}/cloud-service/App.CloudService.csproj"
  }
}

Öppna ett terminalfönster i rotkatalogen för Dockerfile och kör följande docker-kommando:

docker build -t appcloudservice:latest -f Dockerfile .

docker build När kommandot körs bearbetas varje rad i Dockerfile som ett instruktionssteg. Det här kommandot skapar avbildningen och skapar en lokal lagringsplats med namnet appcloudservice som pekar på avbildningen.

Dricks

Den genererade Dockerfile skiljer sig mellan utvecklingsmiljöer. Om du till exempel lägger till Docker-stöd från Visual Studio kan det uppstå problem om du försöker skapa Docker-avbildningen från Visual Studio Code, eftersom Dockerfile-stegen varierar. Det är bäst att välja en enda utvecklingsmiljö och använda den i den här självstudien.

Skapa containerregister

Med en Azure Container Registry-resurs (ACR) kan du skapa, lagra och hantera containeravbildningar och artefakter i ett privat register. Om du vill skapa ett containerregister måste du skapa en ny resurs i Azure-portalen.

  1. Välj prenumerationen och motsvarande resursgrupp (eller skapa en ny).
  2. Ange ett registernamn.
  3. Välj en plats.
  4. Välj en lämplig SKU, till exempel Basic.
  5. Välj Granska + skapa.
  6. När valideringen har godkänts väljer du Skapa.

Viktigt!

För att kunna använda det här containerregistret när du skapar en containerinstans måste du aktivera administratörsanvändare. Välj Åtkomstnycklar och aktivera Administratörsanvändare.

Med en Azure Container Registry-resurs (ACR) kan du skapa, lagra och hantera containeravbildningar och artefakter i ett privat register. Öppna ett terminalfönster i rotkatalogen för Dockerfile och kör följande Azure CLI-kommando:

Viktigt!

Om du vill interagera med Azure-resurser från Azure CLI måste du autentiseras för terminalsessionen. Använd kommandot för att autentisera az login :

az login

När du har loggat in använder az account set du kommandot för att ange din prenumeration när du har fler än en och ingen standardprenumeration har angetts.

az account set --subscription <subscription name or id>

När du har loggat in på Azure CLI kan sessionen interagera med resurser i enlighet med detta.

Om du inte redan har en resursgrupp som du vill associera arbetstjänsten med skapar du en med az group create kommandot :

az group create -n <resource group> -l <location>

<resource group> Ange namnet och <location>. Om du vill skapa ett containerregister anropar du az acr create kommandot.

az acr create -n <registry name> -g <resource group> --sku <sku> --admin-enabled true

Ersätt platshållarna med dina egna lämpliga värden:

  • <registry name>: registrets namn.
  • <resource group>: resursgruppens namn som du använde.
  • <sku>: accepterade värden, Basic, Classic, Premium eller Standard.

Kommandot ovan:

  • Skapar ett Azure Container Registry, givet ett registernamn, i den angivna resursgruppen.
  • Aktiverade en administratörsanvändare – detta krävs för Azure Container Instances.

Mer information finns i Snabbstart: Skapa ett Azure-containerregister.

Skicka avbildningen till containerregistret

När .NET Docker-avbildningen har skapats och containerregisterresursen har skapats kan du nu skicka avbildningen till containerregistret.

Högerklicka på projektet i Solution Explorer och välj Publicera. Dialogrutan Publicera visas. Som Mål väljer du Azure och sedan Nästa.

Visual Studio: Publish dialog - select Azure

Som Specifikt mål väljer du Azure Container Registry och sedan Nästa.

Visual Studio: Publish dialog - select container registry

Välj sedan det prenumerationsnamn som du använde för att skapa ACR-resursen för Container Registry. I urvalsområdet Containerregister väljer du det containerregister som du skapade och väljer sedan Slutför.

Visual Studio: Publish dialog - select container registry details

Då skapas en publiceringsprofil som kan användas för att publicera avbildningen till containerregistret. Välj knappen Publicera för att skicka avbildningen till containerregistret, utdatafönstret rapporterar publiceringsförloppet. När den har slutförts visas meddelandet "Har publicerats".

Välj Docker i aktivitetsfälteti Visual Studio Code. Expandera panelen BILDER trädvy, expandera sedan bildnoden appcloudservice och högerklicka på taggenlatest.

Visual Studio Code: Docker - push image

Det integrerade terminalfönstret rapporterar förloppet för docker push kommandot till containerregistret.

Om du vill skicka en avbildning till containerregistret måste du logga in på registret först:

az acr login -n <registry name>

Kommandot az acr login loggar in i ett containerregister via Docker CLI. Om du vill skicka avbildningen till containerregistret använder du kommandot az acr build med containerregistrets namn som <registry name>:

az acr build -r <registry name> -t appcloudservice .

Kommandot ovan:

  • Packar in källan i en tar-fil .
  • Laddar upp den till containerregistret.
  • Containerregistret packar upp tar-filen .
  • docker build Kör kommandot i containerregisterresursen mot Dockerfile.
  • Lägger till avbildningen i containerregistret.

Om du vill kontrollera att avbildningen har överförts till containerregistret går du till Azure-portalen. Öppna containerregisterresursen under Tjänster och välj Lagringsplatser. Du bör se bilden.

Distribuera som containerinstans

I Visual Studio Code väljer du Docker i aktivitetsfältet. Expandera noden REGISTRIES och välj Anslut Registry. Välj Azure när du uppmanas att göra det och logga in om det behövs.

Viktigt!

Distribution som en containerinstans från Visual Studio Code fungerar inte längre på Mac. Mer information finns i GitHub: Om Docker-tillägget för Visual Studio Code.

Visual Studio Code - Docker: Connect registry

Expandera noden REGISTRIES, välj Azure, din prenumeration > containerregistret > avbildningen och högerklicka sedan på taggen. Välj Distribuera avbildning till Azure Container Instances.

Visual Studio Code - Docker: Deploy image to Azure Container Instances

Skapa en containerinstans genom att först skapa en containergrupp med kommandot az container create .

az container create -g <resource group> \
  --name <instance name> \
  --image <registry name>.azurecr.io/<image name>:latest \
  --registry-password <password>

Ange lämpliga värden:

  • <resource group>: resursgruppens namn som du har använt i den här självstudien.
  • <instance name>: namnet på containerinstansen.
  • <registry name>: namnet på containerregistret.
  • <image name>: namnet på avbildningen.
  • <password>: lösenordet till containerregistret – du kan hämta det från Azure-portalen, åtkomstnycklar för containerregisterresurser>.

Om du vill skapa en containerinstans måste du också skapa en ny resurs i Azure-portalen.

  1. Välj samma prenumeration och motsvarande resursgrupp i föregående avsnitt.
  2. Ange ett containernamnappcloudservice-container .
  3. Välj en region som motsvarar föregående platsval .
  4. Som Avbildningskälla väljer du Azure Container Registry.
  5. Välj registret efter det namn som angavs i föregående steg.
  6. Välj taggen Bild och Bild.
  7. Välj Granska + skapa.
  8. Om verifieringen har godkänts väljer du Skapa.

Det kan ta en stund innan resurserna skapas. När de har skapats väljer du knappen Gå till resurs .

Mer information finns i Snabbstart: Skapa en Azure-containerinstans.

Verifiera tjänstfunktioner

Omedelbart efter att containerinstansen har skapats börjar den köras.

Om du vill kontrollera att arbetstjänsten fungerar korrekt går du till Azure-portalen i containerinstansresursen och väljer alternativet Containrar .

Azure portal: Container instance running

Du ser containrarna och deras aktuella tillstånd. I det här fallet körs den. Välj Loggar för att se .NET-arbetstjänstens utdata.

Om du vill kontrollera att arbetstjänsten fungerar korrekt kan du visa loggarna från ditt program som körs. az container logs Använd kommandot:

az container logs -g <resource group> --name <instance name>

Ange lämpliga värden:

  • <resource group>: resursgruppens namn som du har använt i den här självstudien.
  • <instance name>: namnet på containerinstansen.

Du ser utdataloggarna för .NET-arbetstjänsten, vilket innebär att du har distribuerat din containerbaserade app till ACI.

Se även