Megosztás a következőn keresztül:


Alkalmazások hibakeresése helyi Docker-tárolóban

A Visual Studio egységes módot kínál a Docker-tárolók fejlesztésére és az alkalmazás helyi ellenőrzésére. Futtathatja és hibakeresésre használhatja az alkalmazásokat Linux vagy Windows rendszerű tárolókban, amelyek a helyi Windows-asztalon futnak, és a Docker telepítve van, és nem kell újraindítania a tárolót minden alkalommal, amikor módosít egy kódmódosítást.

Ez a cikk bemutatja, hogyan indíthat el egy alkalmazást a Visual Studióval egy helyi Docker-tárolóban, végezhet módosításokat, majd frissíthet a böngészőben a módosítások megtekintéséhez. Ez a cikk azt is bemutatja, hogyan állíthat be töréspontokat a tárolóalapú alkalmazások hibakereséséhez. A támogatott projekttípusok közé tartozik a webalkalmazás, a konzolalkalmazás és a .NET-keretrendszert és a .NET Core-t célzó Azure-függvény. A cikkben bemutatott példák egy ASP.NET Core Web App típusú projekt és egy Konzolalkalmazás (.NET-keretrendszer) típusú projekt.

Ha már rendelkezik támogatott típusú projektel, a Visual Studio létrehozhat egy Docker-fájlt, és konfigurálhatja a projektet tárolóban való futtatásra. Lásd: Tárolóeszközök a Visual Studio-ban.

Előfeltételek

Ha helyi Docker-tárolóban szeretne alkalmazásokat hibakeresésre telepíteni, a következő eszközöket kell telepíteni:

A Docker-tárolók helyi futtatásához helyi Docker-ügyfélnek kell lennie. Használhatja Docker Desktop, amelyhez Windows 10 vagy újabb verzió szükséges.

Webalkalmazás létrehozása

Ha rendelkezik projekttel, és hozzáadta a Docker-támogatást az áttekintésleírása szerint, hagyja ki ezt a szakaszt.

  1. A Visual Studio startablakában válassza Új projekt létrehozásalehetőséget.

  2. Válassza ASP.NET Core Web Applehetőséget, majd válassza a Továbblehetőséget.

  3. Adja meg az új alkalmazás nevét (vagy használja az alapértelmezett nevet), adja meg a lemez helyét, majd válassza a Továbblehetőséget.

  4. Válassza ki a megcélzni kívánt .NET-verziót. Ha nem biztos benne, válassza az LTS (hosszú távú támogatás) kiadását.

    Képernyőkép, amely bemutatja, hogyan hozhat létre új ASP.NET Core webalkalmazás-projektet a Visual Studio 2019-ben.

  5. Válassza ki, hogy SSL-támogatást szeretne-e, ha bejelöli vagy törli a HTTPS- konfigurálása jelölőnégyzetet.

  6. Jelölje be a Docker-támogatás engedélyezése jelölőnégyzetet.

  7. A legördülő listában válassza ki a kívánt tárolótípust: Windows vagy Linux.

  8. A folyamat befejezéséhez válassza a elemet, majd hozzon létre egy-et.

  1. A Visual Studio startablakában válassza Új projekt létrehozásalehetőséget.

  2. Válassza ASP.NET Core Web Applehetőséget, majd válassza a Továbblehetőséget.

  3. Adja meg az új alkalmazás nevét (vagy használja az alapértelmezett nevet), adja meg a lemez helyét, majd válassza a Továbblehetőséget.

  4. Válassza ki a megcélzni kívánt .NET-verziót. Ha nem biztos benne, válassza az LTS (hosszú távú támogatás) kiadását.

    Képernyőkép, amely bemutatja, hogyan hozhat létre új ASP.NET Core webalkalmazás-projektet a Visual Studio 2022-ben.

  5. Válassza ki, hogy SSL-támogatást szeretne-e, ha bejelöli vagy törli a HTTPS- konfigurálása jelölőnégyzetet.

  6. Jelölje be a Docker- engedélyezése jelölőnégyzetet.

  7. A Docker operációs rendszer legördülő listában válassza ki a kívánt tárolótípust: Windows vagy Linux.

  8. A folyamat befejezéséhez válassza a létrehozása lehetőséget.

Razor-lapok szerkesztése és frissítése

A Razor-lapok módosításainak gyors iterálásához elindíthatja az alkalmazást egy tárolóban. Ezután folytassa a módosításokat, és ellenőrizze a módosításokat az Internet Information Services (IIS) Express szolgáltatásával.

  1. Győződjön meg arról, hogy a Docker be van állítva a használt tárolótípus (Linux vagy Windows) használatára. Kattintson a jobb gombbal a Tálcán a Docker ikonra, és válassza a Váltás Linux-tárolókra vagy Váltás Windows-tárolókra, ha szükséges.

  2. A kód szerkesztése és a futó webhely frissítése az ebben a szakaszban leírtak szerint nem engedélyezett a .NET Core és a .NET 5 és újabb verziók alapértelmezett sablonjaiban. Az engedélyezéshez adja hozzá a NuGet-csomagot Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation. Adjon hozzá egy hívást a bővítménymetódushoz AddRazorRuntimeCompilation a Startup.ConfigureServices metódus kódjához. Ezt csak DEBUG módban kell engedélyezni, ezért kódolnia kell az Main metódusban:

    // Add services to the container.
    var mvcBuilder = builder.Services.AddRazorPages();
    #if DEBUG
        if (Env.IsDevelopment())
        {
            mvcBuilder.AddRazorRuntimeCompilation();
        }
    #endif
    

    További információ: Razor-fájlok kompilálása ASP.NET Core. A pontos kód a cél keretrendszertől és a használt projektsablontól függően változhat.

  3. A hibakeresési megoldáskonfigurációs beállítása. Ezután nyomja le Ctrl+F5 a Docker-rendszerkép létrehozásához és helyi futtatásához.

    Ha a tárolórendszerkép egy Docker-tárolóban van felépítve és fut, a Visual Studio elindítja a webalkalmazást az alapértelmezett böngészőben.

  4. Menjen az Index lapra. Ezen a lapon módosításokat hajtunk végre.

  5. Térjen vissza a Visual Studióba, és nyissa meg Index.cshtml.

  6. Adja hozzá a következő HTML-tartalmat a fájl végéhez, majd mentse a módosításokat.

    <h1>Hello from a Docker container!</h1>
    
  7. A kimeneti ablakban, amikor a .NET-build befejeződött, és a következő sorok láthatók, váltson vissza a böngészőbe, és frissítse a lapot:

    Now listening on: http://*:80
    Application started. Press Ctrl+C to shut down.
    

A módosítások alkalmazása megtörtént!

Hibakeresés töréspontokkal

A módosítások gyakran további ellenőrzést igényelnek. Ehhez a feladathoz használhatja a Visual Studio hibakeresési funkcióit.

  1. A Visual Studióban nyissa meg a Index.cshtml.cs.

  2. Cserélje le a OnGet metódus tartalmát a következő kódra:

        ViewData["Message"] = "Your application description page from within a container";
    
  3. A kódsor bal oldalán állítson be egy töréspontot.

  4. A hibakeresés megkezdéséhez és a töréspont eléréséhez nyomja le az F5 billentyűt.

  5. Váltson a Visual Studióra a töréspont megtekintéséhez. Értékek vizsgálata.

    A Visual Studióban a Index.cshtml.cs kódjának egy részét ábrázoló képernyőkép egy sárga színnel kiemelt kódsor bal oldalán lévő törésponttal.

    A Visual Studióban a Index.cshtml.cs kódjának egy részét ábrázoló képernyőkép egy sárga színnel kiemelt kódsor bal oldalán lévő törésponttal.

Azonnali újratöltés

A Visual Studio 17.10-ben és újabb verzióiban a gyakori újratöltés is támogatott a tárolókban, bár vegye figyelembe, hogy egy tárolóban frissítenie kell a lapot a módosítások megtekintéséhez. Ha a módosítás CSS-fájlra változik, a módosítások megtekintéséhez ismét frissítenie kell a lapot. Vegye figyelembe, hogy a hatókörhöz tartozó CSS-fájlok (.razor.css fájlok, lásd ASP.NET Core Blazor CSS-elkülönítési) frissítései nem támogatottak a gyors újratöltés részeként.

.NET-keretrendszer-konzolalkalmazás létrehozása

Ez a szakasz bemutatja, hogyan lehet hibakeresést végezni egy .NET-keretrendszer konzolalkalmazás-projektjében egy helyi Docker-tárolóban, először bemutatva, hogyan adhat hozzá Docker-támogatást a projekthez. Fontos felismerni, hogy a különböző projekttípusok különböző szintű Docker-támogatással rendelkeznek. A .NET Core -hoz (beleértve a .NET 5-öt és újabb verziót is) a Docker-támogatásnak még több szintje is van, mint a .NET-keretrendszer konzolalkalmazás-projektjei.

.NET-keretrendszer konzolalkalmazás-projekt létrehozásakor nincs lehetőség a Docker-támogatás engedélyezésére. Egy ilyen projekt létrehozása után nem lehet explicit módon docker-támogatást adni a projekthez. .NET-keretrendszer-konzolalkalmazás-projekt esetén lehetőség van a tároló vezénylésére vonatkozó támogatás hozzáadására. A .NET-keretrendszer konzolalkalmazás-projektjének vezénylési támogatásának egyik mellékhatása, hogy hozzáadja a Docker-támogatást a projekthez.

Az alábbi eljárás bemutatja, hogyan adhat vezénylési támogatást egy .NET-keretrendszer-konzolalkalmazás-projekthez, amely később hozzáadja a Docker-támogatást a projekthez, és lehetővé teszi a projekt hibakeresését egy helyi Docker-tárolóban.

  1. Hozzon létre egy új .NET-keretrendszerkonzol-alkalmazásprojektet.
  2. A Megoldáskezelőben kattintson a jobb gombbal a projekt elemére, majd válassza a >Tároló-vezénylési támogatás hozzáadásalehetőséget. A megjelenő párbeszédpanelen válassza Docker Composelehetőséget. A program hozzáad egy Docker-fájlt a projekthez, és hozzáad egy Docker Compose-projektet a társított támogatási fájlokkal.

Hibakeresés töréspontokkal

  1. A Megoldáskezelőben nyissa meg a Program.cs.

  2. Cserélje le a Main metódus tartalmát a következő kódra:

        System.Console.WriteLine("Hello, world!");
    
  3. Állítson be egy töréspontot a kódsortól balra.

  4. Nyomja le F5 billentyűkombinációt a hibakeresés megkezdéséhez és a töréspont eléréséhez.

  5. Váltson a Visual Studióra a töréspont megtekintéséhez és az értékek vizsgálatához.

    Képernyőkép az Program.cs kódablakáról a Visual Studióban egy sárga színnel kiemelt kódsor bal oldalán lévő törésponttal.

Hitelesítés az Azure-szolgáltatásokhoz a token proxy használatával

Ha az Azure-szolgáltatásokat egy tárolóból használja, a DefaultAzureCredential (a VisualStudioCredential engedélyezve) segítségével hitelesítheti magát az Azure-szolgáltatásokhoz a Microsoft Entra-fiókjával anélkül, hogy a tárolón bármilyen további konfigurációra lenne szükség. Ennek engedélyezéséről Visual Studio Container Toolskonfigurálásáról olvashat. Emellett be kell állítania az Azure-hitelesítést a Visual Studióban az Visual Studio Azure-ral való hitelesítésecímű témakör utasításait követve. A VisualStudioCredential támogatása egy tárolóban a Visual Studio 17.6-os és újabb verziójában érhető el.

Azure Functions

Ha egy integrált Azure Functions-projektet hibakeres, és a tárolóban lévő tokenproxyval kezeli az Azure-szolgáltatásokhoz való hitelesítést, a .NET futtatókörnyezetet be kell másolnia a tárolóba, hogy a tokenproxy futtatható legyen. Izolált Azure Functions-projekt hibakeresése esetén már rendelkezik .NET-futtatókörnyezetsel, így nincs szükség erre a további lépésre.

Annak érdekében, hogy a .NET-futtatókörnyezet elérhető legyen a tokenproxy számára, adja hozzá vagy módosítsa a dockerfile debug rétegét, amely a .NET-futtatókörnyezetet a tárolólemezképbe másolja. Linux-tárolók esetén a következő kódot adhatja hozzá a Dockerfile-hoz:

# 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

Emellett a Visual Studio-projektben módosítania kell, hogy ezt a réteget a gyors módban történő hibakereséskor használandó rétegként adja meg. A Gyors mód magyarázatáért lásd a Visual Studio Docker-tárolók testreszabásarészt. Egytárolós környezetben (nem Docker Compose esetén) állítsa az MSBuild DockerfileFastModeStage tulajdonságot debug értékre, hogy ezt a réteget használhassa hibakereséshez. A Docker Compose esetében módosítsa a docker-compose.vs.debug.yml az alábbiak szerint:

# Set the stage to debug to use an image with the .NET runtime in it
services:
  functionappintegrated:
    build:
      target: debug

Az Azure Functions használatával történő hitelesítés kódmintájáért, beleértve az integrált és az izolált forgatókönyveket is, tekintse meg VisualStudioCredentialExample.

Tároló újrafelhasználása

Ha a Gyors mód-ot használja, amelyet a Visual Studio általában a hibakeresési konfigurációban alkalmaz, akkor a Visual Studio csak a tárolóképeket és magát a tárolót építi újra a Dockerfile módosításakor. Ha nem módosítja a Dockerfile-t, a Visual Studio újra felhasználja a tárolót egy korábbi futtatásból.

Ha manuálisan módosította a tárolót, és tiszta tárolórendszerképpel szeretne újraindulni, használja a Build>Clean parancsot a Visual Studióban, majd hozza létre a szokásos módon.

Ha nem gyors módot használ, amely jellemző a kiadási konfigurációra, a Visual Studio a projekt minden egyes létrehozásakor újraépíti a tárolót.

A gyors mód használata konfigurálható; lásd A Visual Studio Container Toolskonfigurálása című témakört.

Hibaelhárítás

Útmutató a Visual Studio Docker fejlesztési hibaelhárításához.

További részletekért olvassa el a Hogyan épít a Visual Studio tárolóalapú alkalmazásokat.

További információ a Dockerről a Visual Studióval, a Windowssal és az Azure-ral