Dela via


Snabbstart: Docker i Visual Studio

Med Visual Studio kan du enkelt skapa, felsöka och köra containerbaserade .NET, ASP.NET och ASP.NET Core-appar och publicera dem i Azure Container Registry, Docker Hub, Azure App Service eller ditt eget Container Registry. I den här artikeln publicerar vi en ASP.NET Core-app till Azure Container Registry.

Förutsättningar

Installation och konfiguration

För Docker-installation läser du först informationen på Docker Desktop för Windows: Vad du bör veta innan du installerar. Installera sedan Docker Desktop.

Lägga till ett projekt i en Docker-container

  1. Skapa ett nytt projekt med hjälp av mallen ASP.NET Core Web App eller välj ASP.NET Web Application (.NET Framework) om du vill använda .NET Framework i stället för .NET Core.

  2. På skärmen Skapa nytt webbprogram kontrollerar du att kryssrutan Aktivera Docker-support är markerad.

    Skärmbild av kryssrutan Aktivera Docker-support.

    Skärmbilden visar .NET Core; Om du använder .NET Framework ser det lite annorlunda ut.

  3. Välj den typ av container du vill använda (Windows eller Linux) och klicka på Skapa.

Översikt över Dockerfile

En Dockerfile, receptet för att skapa en slutlig Docker-avbildning, skapas i projektet. Se Dockerfile-referensen för att förstå kommandona i den.:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

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

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

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

Föregående Dockerfile baseras på dotnet/core/aspnet-avbildningen och innehåller instruktioner för att ändra basavbildningen genom att skapa projektet och lägga till det i containern. Om du använder .NET Framework kommer basavbildningen att vara annorlunda.

När kryssrutan Konfigurera för HTTPS i den nya projektdialogrutan är markerad exponerar Dockerfile två portar. En port används för HTTP-trafik. den andra porten används för HTTPS. Om kryssrutan inte är markerad exponeras en enskild port (80) för HTTP-trafik.

Felsöka

Välj Docker i listrutan felsökning i verktygsfältet och börja felsöka appen. Du kan se ett meddelande med en uppmaning om att lita på ett certifikat. välj att lita på att certifikatet fortsätter.

Alternativet Containerverktyg i fönstret Utdata visar vilka åtgärder som utförs. Första gången kan det ta ett tag att ladda ned basavbildningen, men det går mycket snabbare vid efterföljande körningar.

Anmärkning

Om du behöver ändra portar för felsökning kan du göra det i filenlaunchSettings.json . Se Inställningar för containerstart.

Containerfönstret

Om du har Visual Studio 2019 version 16.4 eller senare kan du använda fönstret Containrar för att visa containrar som körs på datorn samt avbildningar som du har tillgängliga.

Öppna fönstret Containrar med hjälp av sökrutan i IDE (tryck på Ctrl+Q för att använda det), skriv in containeroch välj fönstret Containrar i listan.

Du kan montera fönstret Containrar på en lämplig plats, till exempel under redigeraren, genom att flytta runt det och följa guiderna för fönsterplacering.

I fönstret letar du upp containern och går igenom varje flik för att visa miljövariabler, portmappningar, loggar och filsystemet.

Skärmbild av fönstret Containers.

För mer information, se Använd fönstret Containrar.

Publicera Docker-avbildningar

När appens utvecklings- och felsökningscykel har slutförts kan du skapa en produktionsbild av appen.

  1. Ändra listrutan för konfiguration till Släpp och skapa appen.

  2. Högerklicka på projektet i Solution Explorer och välj Publicera.

  3. I dialogrutan Publicera väljer du fliken Docker Container Registry .

    Skärmbild av dialogrutan Publicera – välj Docker Container Registry.

  4. Välj Skapa nytt Azure Container Registry.

    Skärmbild av dialogrutan Publicera – välj Skapa ett nytt Azure Container Registry.

  5. Fyll i önskade värden i Skapa ett nytt Azure Container Registry.

    Inställning Föreslaget värde Beskrivning
    DNS-prefix Globalt unikt namn Namn som unikt identifierar ditt containerregister.
    Abonnemang Välj din prenumeration Den Azure-prenumeration som ska användas.
    Resursgrupp minResursgrupp Namnet på resursgruppen där containerregistret ska skapas. Välj Ny för att skapa en ny resursgrupp.
    SKU Norm Tjänstnivån för containerregistret
    Registerplats En plats nära dig Välj en plats i en region nära dig eller nära andra tjänster som ska använda containerregistret.

    Skärmbild av dialogrutan Skapa Azure Container Registry i Visual Studio.

  6. Klicka på Skapa. Dialogrutan Publicera visar nu det skapade registret.

    Skärmbild av dialogrutan Publicera som visar hur Azure Container Registry har skapats.

  7. Välj Slutför för att slutföra processen med att publicera containeravbildningen till det nyligen skapade registret i Azure.

    Skärmbild som visar lyckad publicering.

Nästa steg

Nu kan du hämta containern från registret till alla värdar som kan köra Docker-avbildningar, till exempel Azure Container Instances.

Med Visual Studio kan du enkelt skapa, felsöka och köra containerbaserade .NET, ASP.NET och ASP.NET Core-appar och publicera dem i Azure Container Registry, Docker Hub, Azure App Service eller ditt eget Container Registry. I den här artikeln publicerar du en ASP.NET Core-app till Azure Container Registry.

Förutsättningar

Installation och konfiguration

För Docker-installation läser du först informationen på Docker Desktop för Windows: Vad du bör veta innan du installerar. Installera sedan Docker Desktop.

Lägga till ett projekt i en Docker-container

  1. Innan du skapar Visual Studio-projektet kontrollerar du att Docker Desktop kör den typ av containrar (Windows eller Linux) som du tänker använda i ditt Visual Studio-projekt.

    Om du vill ändra containertypen som används av Docker Desktop högerklickar du på Docker-ikonen (val) i aktivitetsfältet och väljer antingen Växla till Linux-containrar eller Växla till Windows-containrar.

    Varning

    Om du byter containertyp när du har skapat Visual Studio-projektet kan Docker-avbildningsfilerna inte läsas in.

  2. Skapa ett nytt projekt med hjälp av mallen ASP.NET Core Web App eller välj ASP.NET Web Application (.NET Framework) om du vill använda .NET Framework i stället för .NET Core.

  3. På skärmen Skapa nytt webbprogram kontrollerar du att kryssrutan Aktivera Docker-support är markerad.

    Skärmbild av kryssrutan Aktivera Docker-support.

    Skärmbilden visar den senaste versionen med .NET 8.0. Om du använder .NET Framework ser dialogrutan lite annorlunda ut.

  4. Välj den typ av container som du vill använda (Windows eller Linux) och välj Skapa.

Översikt över Dockerfile

Visual Studio skapar en Dockerfile i projektet, som innehåller receptet för hur du skapar en slutlig Docker-avbildning. Mer information finns i Dockerfile-referensen för information om de kommandon som används i Dockerfile.

#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 AS base
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0-nanoserver-1809 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["MyWepApp/MyWebApp.csproj", "MyWebApp/"]
RUN dotnet restore "./MyWebApp/./MyWebApp.csproj"
COPY . .
WORKDIR "/src/MyWebApp"
RUN dotnet build "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/build

# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/publish /p:UseAppHost=false

# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyWebApp.dll"]

Föregående Dockerfile baseras på MICROSOFT Container Registry (MCR) .NET 8-avbildningen och innehåller instruktioner för att ändra basavbildningen genom att skapa projektet med namnet MyWebApp och lägga till det i containern. Om du använder .NET Framework är basavbildningen annorlunda.

När kryssrutan Konfigurera för HTTPS i den nya projektdialogrutan är markerad exponerar Dockerfile två portar. En port används för HTTP-trafik. den andra porten används för HTTPS. Om kryssrutan inte är markerad exponeras en enskild port (80) för HTTP-trafik.

Med Visual Studio 2022 version 17.7 eller senare kan du rikta in dig på .NET 8. I så fall har du fördelen av att kunna köra din app säkrare, som en normal användare, i stället för med förhöjd behörighet. Standard-Dockerfilen som genereras av Visual Studio för .NET 8-projekt är konfigurerad för att köras som en normal användare. Om du vill aktivera det här beteendet i ett befintligt projekt lägger du till raden USER app till Dockerfile i basavbildningen. Eftersom port 80 är begränsad för normala användare exponerar du portarna 8080 och 8081 i stället för 80 och 443. Port 8080 används för HTTP-trafik och port 8081 används för HTTPS. Om du vill köra som en vanlig användare måste containern använda en .NET 8-basavbildning och appen måste köras som en .NET 8-app. När den är korrekt konfigurerad bör Dockerfile innehålla kod som i följande exempel:

FROM mcr.microsoft.com/dotnet/aspnet:8.0-preview AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

Felsöka

Välj Docker i listrutan felsökning i verktygsfältet och börja felsöka appen. Du kan se ett meddelande med en uppmaning om att lita på ett certifikat. välj att lita på att certifikatet fortsätter.

Alternativet Containerverktyg i fönstret Utdata visar vilka åtgärder som utförs. Första gången kan det ta ett tag att ladda ned basavbildningen, men det går snabbare vid efterföljande körningar.

När bygget är klart öppnas webbläsaren och appens startsida visas. I webbläsarens adressfält kan du se localhost URL och portnummer för felsökning.

Anmärkning

Om du behöver ändra portar för felsökning kan du göra det i filen launchSettings.json. Se Inställningar för containerstart.

Containerfönstret

Du kan använda fönstret Containrar för att visa vilka containrar som körs på din dator och övriga bilder som är tillgängliga för dig.

Öppna fönstret Containrar med hjälp av sökrutan i IDE (tryck på Ctrl+Q för att använda det), skriv in containeroch välj fönstret Containrar i listan.

Du kan montera fönstret Containrar på en lämplig plats, till exempel under redigeraren, genom att flytta runt det och följa guiderna för fönsterplacering.

I fönstret letar du upp containern och går igenom varje flik för att visa miljövariabler, portmappningar, loggar och filsystemet.

Skärmbild av fönstret Containers.

För mer information, se Använd fönstret Containrar.

Publicera Docker-avbildningar

När appens utvecklings- och felsökningscykel har slutförts kan du skapa en produktionsbild av appen.

  1. Ändra listrutan för konfiguration till Släpp och skapa appen.

  2. Högerklicka på projektet i Solution Explorer och välj Publicera.

  3. I dialogrutan Publicera väljer du fliken Docker Container Registry .

    Skärmbild av dialogrutan Publicera – välj Docker Container Registry.

  4. Välj Skapa nytt Azure Container Registry.

    Skärmbild av dialogrutan Publicera – välj Skapa ett nytt Azure Container Registry.

  5. Fyll i önskade värden i Skapa ett nytt Azure Container Registry.

    Inställning Föreslaget värde Beskrivning
    DNS-prefix Globalt unikt namn Namn som unikt identifierar ditt containerregister.
    Abonnemang Välj din prenumeration Den Azure-prenumeration som ska användas.
    Resursgrupp minResursgrupp Namnet på resursgruppen där containerregistret ska skapas. Välj Ny för att skapa en ny resursgrupp.
    SKU Norm Tjänstnivån för containerregistret
    Registerplats En plats nära dig Välj en plats i en region nära dig eller nära andra tjänster som kan använda ditt containerregister.

    Skärmbild av dialogrutan Skapa Azure Container Registry i Visual Studio.

  6. Välj Skapa. Dialogrutan Publicera visar nu det skapade registret.

    Skärmbild av dialogrutan Publicera som visar hur Azure Container Registry har skapats.

  7. Välj Slutför för att slutföra processen med att publicera containeravbildningen till det nyligen skapade registret i Azure.

    Skärmbild som visar lyckad publicering.

Nästa steg

Nu kan du hämta containern från registret till alla värdar som kan köra Docker-avbildningar, till exempel Azure Container Instances.

Ytterligare resurser