Ladění aplikací v místním kontejneru Dockeru
Visual Studio poskytuje konzistentní způsob, jak vyvíjet kontejnery Dockeru a ověřovat aplikaci místně. Aplikace můžete spouštět a ladit v kontejnerech Linuxu nebo Windows běžících na místní ploše Windows s nainstalovaným Dockerem a nemusíte kontejner restartovat pokaždé, když provedete změnu kódu.
Tento článek ukazuje, jak pomocí sady Visual Studio spustit aplikaci v místním kontejneru Dockeru, provést změny a pak aktualizovat prohlížeč, aby se změny zobrazily. V tomto článku se také dozvíte, jak nastavit zarážky pro ladění kontejnerizovaných aplikací. Mezi podporované typy projektů patří webová aplikace, konzolová aplikace a funkce Azure, které cílí na .NET Framework a .NET Core. Příklady uvedené v tomto článku jsou projekt typu ASP.NET Core Web App a projekt typu Konzolová aplikace (.NET Framework).
Pokud už máte projekt podporovaného typu, visual Studio může vytvořit soubor Dockerfile a nakonfigurovat projekt tak, aby běžel v kontejneru. Viz Nástroje kontejneru v sadě Visual Studio.
Požadavky
Pokud chcete ladit aplikace v místním kontejneru Dockeru, musí být nainstalované následující nástroje:
- Visual Studio 2019 s nainstalovanou úlohou Vývoj webu
- Visual Studio 2022 s nainstalovanou úlohou Vývoj webu
Pokud chcete spouštět kontejnery Dockeru místně, musíte mít místního klienta Dockeru. Můžete použít Docker Desktop, který vyžaduje Windows 10 nebo novější.
Vytvoření webové aplikace
Pokud máte projekt a přidali jste podporu Dockeru, jak je popsáno v přehledu, přeskočte tuto část.
V úvodním okně sady Visual Studio vyberte Vytvořit nový projekt.
Vyberte ASP.NET Core Web App a pak vyberte Další.
Zadejte název nové aplikace (nebo použijte výchozí název), zadejte umístění na disku a pak vyberte Další.
Vyberte verzi .NET, na kterou chcete cílit. Pokud si nejste jistí, zvolte verzi LTS (dlouhodobá podpora).
Zvolte, jestli chcete podporu PROTOKOLU SSL vybrat nebo zrušit zaškrtnutí políčka Konfigurovat pro HTTPS .
Zaškrtněte políčko Povolit podporu Dockeru.
V rozevíracím seznamu vyberte požadovaný typ kontejneru: Windows nebo Linux.
Vyberte Vytvořit k dokončení procesu.
V úvodním okně sady Visual Studio vyberte Vytvořit nový projekt.
Vyberte ASP.NET Core Web App a pak vyberte Další.
Zadejte název nové aplikace (nebo použijte výchozí název), zadejte umístění na disku a pak vyberte Další.
Vyberte verzi .NET, na kterou chcete cílit. Pokud si nejste jistí, zvolte verzi LTS (dlouhodobá podpora).
Zvolte, jestli chcete podporu PROTOKOLU SSL vybrat nebo zrušit zaškrtnutí políčka Konfigurovat pro HTTPS .
Zaškrtněte políčko Povolit Docker.
Pomocí rozevíracího seznamu Operačního systému Docker vyberte požadovaný typ kontejneru: Windows nebo Linux.
Vyberte Vytvořit k dokončení procesu.
Úprava stránek Razor Pages a aktualizace
Pokud chcete rychle iterovat změny na stránkách Razor Pages, můžete aplikaci spustit v kontejneru. Pak pokračujte v provádění změn a jejich zobrazení tak, jak byste to udělali s Internetová informační služba (IIS) Express.
Ujistěte se, že je Docker nastavený tak, aby používal typ kontejneru (Linux nebo Windows), který používáte. Klikněte pravým tlačítkem myši na ikonu Dockeru na hlavním panelu a podle potřeby zvolte Přepnout na kontejnery Linuxu nebo Přepnout na kontejnery Windows.
Úprava kódu a aktualizace spuštěného webu, jak je popsáno v této části, není ve výchozích šablonách v .NET Core a .NET 5 a novějších povolených. Pokud ho chcete povolit, přidejte balíček NuGet Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation. Přidejte volání metody rozšíření AddRazorRuntimeCompilation kódu v
Startup.ConfigureServices
metodě. Tuto možnost potřebujete povolit pouze v režimu LADĚNÍ, takže kód je následující vMain
metodě:// Add services to the container. var mvcBuilder = builder.Services.AddRazorPages(); #if DEBUG if (Env.IsDevelopment()) { mvcBuilder.AddRazorRuntimeCompilation(); } #endif
Další informace najdete v tématu Kompilace souboru Razor v ASP.NET Core. Přesný kód se může lišit v závislosti na cílovém rozhraní a šabloně projektu, kterou jste použili.
Nastavte konfiguraci řešení na ladění. Potom stisknutím kláves Ctrl+F5 sestavte image Dockeru a spusťte ji místně.
Když je image kontejneru vytvořená a spuštěná v kontejneru Dockeru, Visual Studio spustí webovou aplikaci ve výchozím prohlížeči.
Přejděte na stránku Rejstřík . Na této stránce provedeme změny.
Vraťte se do sady Visual Studio a otevřete index.cshtml.
Na konec souboru přidejte následující obsah HTML a uložte změny.
<h1>Hello from a Docker container!</h1>
Po dokončení sestavení .NET ve výstupním okně se zobrazí následující řádky, přepněte zpátky do prohlížeče a aktualizujte stránku:
Now listening on: http://*:80 Application started. Press Ctrl+C to shut down.
Byly použity vaše změny.
Ladění pomocí zarážek
Změny často vyžadují další kontrolu. Pro tuto úlohu můžete použít funkce ladění sady Visual Studio.
V sadě Visual Studio otevřete Index.cshtml.cs.
Obsah metody
OnGet
nahraďte následujícím kódem:ViewData["Message"] = "Your application description page from within a container";
Nalevo od řádku kódu nastavte zarážku.
Pokud chcete spustit ladění a stisknout zarážku, stiskněte klávesu F5.
Přepněte do sady Visual Studio a zobrazte zarážku. Zkontrolujte hodnoty.
Opětovné načítání za provozu
V sadě Visual Studio 17.10 a novějších je také Opětovné načítání za provozu podporován v kontejnerech, i když mějte na paměti, že v kontejneru je nutné aktualizovat stránku, abyste viděli změny. Pokud je změna souboru CSS, budete muset znovu aktualizovat stránku, aby se tyto změny zobrazily. Upozorňujeme také, že aktualizace souborů CSS s vymezeným oborem (.razor.css
soubory, viz ASP.NET Izolace šablon stylů CSS Core Blazor) nejsou podporovány v rámci opětovného načítání za provozu.
Vytvoření konzolové aplikace rozhraní .NET Framework
V této části se dozvíte, jak ladit projekt konzolové aplikace rozhraní .NET Framework v místním kontejneru Dockeru tím, že nejprve ukážeme, jak do projektu přidat podporu Dockeru. Je důležité si uvědomit, že různé typy projektů mají různé úrovně podpory Dockeru. Existují dokonce různé úrovně podpory Dockeru pro projekty konzolových aplikací .NET Core (včetně .NET 5 a novějších) a projektů konzolových aplikací rozhraní .NET Framework.
Když se vytvoří projekt konzolové aplikace rozhraní .NET Framework, není možné povolit podporu Dockeru. Po vytvoření takového projektu neexistuje způsob, jak do projektu explicitně přidat podporu Dockeru. Pro projekt konzolové aplikace rozhraní .NET Framework je možné přidat podporu orchestrace kontejnerů. Vedlejším účinkem přidání podpory orchestrace do projektu konzolové aplikace rozhraní .NET Framework je to, že do projektu přidá podporu Dockeru.
Následující postup ukazuje, jak přidat podporu orchestrace do projektu konzolové aplikace rozhraní .NET Framework, který následně do projektu přidá podporu Dockeru a umožňuje, aby byl projekt laděný v místním kontejneru Dockeru.
- Vytvořte nový projekt konzolové aplikace rozhraní .NET Framework.
- V Průzkumník řešení klikněte pravým tlačítkem myši na uzel projektu a pak vyberte Přidat>podporu orchestrace kontejnerů. V zobrazeném dialogovém okně vyberte Docker Compose. Do projektu se přidá soubor Dockerfile a přidá se projekt Docker Compose s přidruženými soubory podpory.
Ladění pomocí zarážek
V Průzkumník řešení otevřete Program.cs.
Obsah metody
Main
nahraďte následujícím kódem:System.Console.WriteLine("Hello, world!");
Nastavte zarážku nalevo od řádku kódu.
Stisknutím klávesy F5 spusťte ladění a stiskněte zarážku.
Přepněte do sady Visual Studio, abyste zobrazili zarážku a zkontrolovali hodnoty.
Ověřování ve službách Azure pomocí proxy tokenu
Pokud používáte služby Azure z kontejneru, můžete použít DefaultAzureCredential (s povoleným VisualStudioCredential ) k ověření ve službách Azure pomocí účtu Microsoft Entra bez jakékoli další konfigurace v kontejneru. Pokud to chcete povolit, podívejte se na postup konfigurace nástrojů Visual Studio Container Tools. Také je potřeba nastavit ověřování Azure v sadě Visual Studio podle pokynů v tématu Ověření sady Visual Studio v Azure. Podpora pro VisualStudioCredential v kontejneru je dostupná v sadě Visual Studio verze 17.6 a novější.
Azure Functions
Pokud ladíte integrovaný projekt Azure Functions a používáte proxy tokenů v kontejneru ke zpracování ověřování ke službám Azure, musíte modul runtime .NET zkopírovat do kontejneru, aby se spustil proxy tokenů. Pokud ladíte izolovaný projekt Azure Functions, už má modul runtime .NET, takže tento dodatečný krok není potřeba.
Pokud chcete zajistit, aby modul runtime .NET byl dostupný pro proxy tokenů, přidejte nebo upravte vrstvu debug
v souboru Dockerfile, která zkopíruje modul runtime .NET do image kontejneru. Pro kontejnery Linuxu můžete do souboru Dockerfile přidat následující kód:
# This layer is to support debugging, VS's Token Proxy requires the runtime to be installed in the container
FROM mcr.microsoft.com/dotnet/runtime:8.0 AS runtime
FROM base as debug
COPY --from=runtime /usr/share/dotnet /usr/share/dotnet
RUN ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet
V projektu sady Visual Studio také musíte provést určité změny, které je třeba zadat jako vrstvu, která se má použít při ladění v rychlém režimu. Vysvětlení rychlého režimu najdete v tématu Přizpůsobení kontejnerů Dockeru v sadě Visual Studio. Pro scénáře s jedním kontejnerem (ne Docker Compose) nastavte vlastnost DockerfileFastModeStage
MSBuild tak debug
, aby používala tuto vrstvu pro ladění. V případě Docker Compose upravte následující docker-compose.vs.debug.yml
:
# Set the stage to debug to use an image with the .NET runtime in it
services:
functionappintegrated:
build:
target: debug
Ukázku kódu ověřování pomocí azure Functions, včetně integrovaných i izolovaných scénářů, najdete v tématu VisualStudioCredentialExample.
Opakované použití kontejneru
Pokud používáte rychlý režim, který Sada Visual Studio obvykle používá pro konfiguraci ladění, Visual Studio znovu sestaví pouze image kontejneru a samotný kontejner při změně souboru Dockerfile. Pokud soubor Dockerfile nezměníte, Visual Studio znovu použije kontejner z předchozího spuštění.
Pokud jste kontejner ručně upravili a chcete restartovat s čistou imagí kontejneru, použijte příkaz Build>Clean v sadě Visual Studio a pak sestavte jako obvykle.
Pokud nepoužíváte rychlý režim, což je typické pro konfiguraci vydané verze, Visual Studio kontejner znovu sestaví při každém sestavení projektu.
Můžete nakonfigurovat, kdy se používá rychlý režim; Viz Postup konfigurace nástrojů Visual Studio Container Tools.
Odstraňování potíží
Zjistěte, jak řešit potíže s vývojem v sadě Visual Studio Docker.
Související obsah
Další podrobnosti najdete v článku O tom, jak Visual Studio sestavuje kontejnerizované aplikace.
Další informace o Dockeru s využitím sady Visual Studio, Windows a Azure
- Přečtěte si další informace o vývoji kontejnerů pomocí sady Visual Studio.
- Informace o sestavení a nasazení kontejneru Dockeru najdete v tématu Integrace Dockeru pro Azure Pipelines.
- Rejstřík článků o Windows Serveru a Nano Serveru najdete v tématu Informace o kontejneru Windows.
- Přečtěte si informace o službě Azure Kubernetes Service a projděte si dokumentaci ke službě Azure Kubernetes Service.