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
- Docker Desktop
- Visual Studio 2019 med Webbutveckling-, Azure-verktyg- och/eller .NET Core-apputveckling-arbetsuppgifter installerad
- .NET Core Development Tools för utveckling med .NET Core
- För att publicera till Azure Container Registry krävs ett Azure-abonnemang. Registrera dig för en kostnadsfri utvärderingsversion.
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
Skapa ett nytt projekt med hjälp av mallen ASP.NET Core Web App eller om du vill använda .NET Framework i stället för .NET Core väljer du ASP.NET Web Application (.NET Framework).
På skärmen Skapa nytt webbprogram kontrollerar du att kryssrutan Aktivera Docker-support är markerad.
Skärmbilden visar .NET Core; Om du använder .NET Framework ser det lite annorlunda ut.
Välj den typ av container du vill använda (Windows eller Linux) och klicka på Skapa.
Översikt över Dockerfile
Ett Dockerfile, receptet för att skapa en slutlig Docker-avbildning, skapas i projektet. Se Dockerfile-referens 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 för 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 Container Tools i fönstret Utdata visar vilka handlingar 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 filen launchSettings.json. Se Inställningar för start av containrar.
Containerfönstret
Om du har Visual Studio 2019 version 16.4 eller senare kan du använda fönstret Containers för att visa containrar som körs på datorn samt bilder som du har tillgängliga.
Öppna fönstret Containers med hjälp av sökrutan i IDE (tryck på Ctrl+Q för att använda den), skriv in container
och välj fönstret Containers i listan.
Du kan montera fönstret Containers på en lämplig plats, till exempel under redigeraren, genom att flytta runt den och följa fönsterplaceringsguiderna.
I fönstret letar du upp containern och går igenom varje flik för att visa miljövariabler, portmappningar, loggar och filsystemet.
Mer information finns i Använd fönstret Behållare.
Publicera Docker-avbildningar
När appens utvecklings- och felsökningscykel har slutförts kan du skapa en produktionsbild av appen.
Ändra listrutan för konfiguration till Release och skapa appen.
Högerklicka på projektet i Solution Explorer och välj Publicera.
I dialogrutan Publicera väljer du fliken Docker Container Registry.
Välj Skapa nytt Azure Container Registry-.
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. Prenumeration Välj din prenumeration Den Azure-prenumeration som ska användas. resursgrupp myResourceGroup Namnet på resursgruppen där containerregistret ska skapas. Välj Ny för att skapa en ny resursgrupp. SKU Standard 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. Klicka på Skapa. Dialogrutan Publicera visar nu det skapade registret.
Välj Slutför för att slutföra processen med att publicera containeravbildningen till det nyligen skapade registret i Azure.
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
- Docker Desktop
- Visual Studio 2022 med arbetsbelastningen Webbutveckling, Azure Tools och/eller .NET-skrivbordsutveckling installerad
- För att publicera till Azure Container Registry krävs ett Azure-abonnemang. Registrera dig för en kostnadsfri utvärderingsversion.
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
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.
Skapa ett nytt projekt med hjälp av mallen ASP.NET Core Web App eller om du vill använda .NET Framework i stället för .NET Core väljer du ASP.NET Web Application (.NET Framework).
På skärmen Skapa nytt webbprogram kontrollerar du att kryssrutan Aktivera Docker-support är markerad.
Skärmbilden visar den senaste versionen med .NET 8.0. Om du använder .NET Framework ser dialogrutan lite annorlunda ut.
Välj den typ av container 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-referens för mer information om kommandona 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-avbildning 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 för 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 Container Tools i fönstret Utdata visar vilka handlingar 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 start av containrar.
Containerfönstret
Du kan använda fönstret Containers för att visa containrar som körs på datorn och andra bilder du har tillgängliga.
Öppna fönstret Containers med hjälp av sökrutan i IDE (tryck på Ctrl+Q för att använda den), skriv in container
och välj fönstret Containers i listan.
Du kan montera fönstret Containers på en lämplig plats, till exempel under redigeraren, genom att flytta runt den och följa fönsterplaceringsguiderna.
I fönstret letar du upp containern och går igenom varje flik för att visa miljövariabler, portmappningar, loggar och filsystemet.
Mer information finns i Använd fönstret Behållare.
Publicera Docker-avbildningar
När appens utvecklings- och felsökningscykel har slutförts kan du skapa en produktionsbild av appen.
Ändra listrutan för konfiguration till Release och skapa appen.
Högerklicka på projektet i Solution Explorer och välj Publicera.
I dialogrutan Publicera väljer du fliken Docker Container Registry.
Välj Skapa nytt Azure Container Registry-.
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. Prenumeration Välj din prenumeration Den Azure-prenumeration som ska användas. resursgrupp myResourceGroup Namnet på resursgruppen där containerregistret ska skapas. Välj Ny för att skapa en ny resursgrupp. SKU Standard 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. Välj Skapa. Dialogrutan Publicera visar nu det skapade registret.
Välj Slutför för att slutföra processen med att publicera containeravbildningen till det nyligen skapade registret i Azure.
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.