Megosztás:


.NET Core-alkalmazás tárolóba helyezése

A következőkre vonatkozik: Windows Server 2025, Windows Server 2022, Windows Server 2019, Windows Server 2016

Ez a témakör azt ismerteti, hogyan csomagolhat be egy meglévő minta .NET-alkalmazást Windows-tárolóként való üzembe helyezéshez, miután a : A Windows előkészítése tárolókhozrészben leírtak szerint beállította a környezetet, és a : Az első Windows-tároló futtatásacikk alapján futtatta az első tárolóját.

A Git forráskezelő rendszernek is telepítve kell lennie a számítógépén. A telepítéshez látogasson el Git.

A mintakód klónozása a GitHubról

Az összes tárolóminta forráskódja a Virtualization-Documentation Git-adattár alatt található egy windows-container-samplesnevű mappában.

  1. Nyisson meg egy PowerShell-munkamenetet, és módosítsa a könyvtárakat arra a mappára, amelyben tárolni szeretné ezt az adattárat. (Más parancssori ablaktípusok is működnek, de a példaparancsok a PowerShellt használják.)

  2. Klónozd a kódtárat az aktuális munkakönyvtáradba:

    git clone https://github.com/MicrosoftDocs/Virtualization-Documentation.git
    
  3. Lépjen a Virtualization-Documentation\windows-container-samples\asp-net-getting-started alatt található mintakönyvtárra, és hozzon létre egy Docker-fájlt az alábbi parancsokkal.

    A Dockerfile olyan, mint egy makefile – ez egy olyan utasítások listája, amelyek közlik a tárolómotorral a tárolórendszerkép összeállítását.

    # Navigate into the sample directory
    Set-Location -Path Virtualization-Documentation\windows-container-samples\asp-net-getting-started
    
    # Create the Dockerfile for our project
    New-Item -Name Dockerfile -ItemType file
    

Írd meg a Dockerfile-t

Nyissa meg az imént létrehozott Dockerfile-t a kívánt szövegszerkesztővel, majd adja hozzá a következő tartalmat:

FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build-env
WORKDIR /app

COPY *.csproj ./
RUN dotnet restore

COPY . ./
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:2.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "asp-net-getting-started.dll"]

Bontsuk le sorról sorra, és magyarázzuk el az egyes utasítások lépéseit.

FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build-env
WORKDIR /app

Az első sorcsoport deklarálja, hogy melyik bázisképből fogjuk felépíteni a konténerünket. Ha a helyi rendszer még nem rendelkezik ezzel a képpel, akkor a Docker automatikusan megpróbálja lekérni. A mcr.microsoft.com/dotnet/core/sdk:2.1 előtelepített .NET Core 2.1 SDK-val érkezik, így alkalmas a 2.1-es verziót célzó ASP .NET Core projektek létrehozására. A következő utasítás úgy módosítja a tároló munkakönyvtárát, hogy /applegyen, ezért az ezt követő parancsok ebben a környezetben futnak.

COPY *.csproj ./
RUN dotnet restore

Ezek az utasítások ezután másolja át a .csproj fájlokat a build-env tároló /app könyvtárába. A fájl másolása után a .NET felolvassa, majd kimegy, és lekéri a projekthez szükséges összes függőséget és eszközt.

COPY . ./
RUN dotnet publish -c Release -o out

Miután a .NET lekérte az összes függőséget a build-env tárolóba, a következő utasítás az összes projektforrásfájlt a tárolóba másolja. Ezután utasítjuk a .NET-et, hogy adja ki az alkalmazásunkat egy kiadási konfigurációval és határozza meg a kimeneti útvonalat.

Az összeállításnak sikeresnek kell lennie. Most létre kell készítenünk a végső képet.

Borravaló

Ez a rövid útmutató egy .NET core-projektet hoz létre forrásból. Tárolórendszerképek létrehozásakor célszerű csak az éles hasznos adatokat és függőségeit belefoglalni a tárolólemezképbe. Nem szeretnénk, hogy a .NET core SDK szerepeljen a végleges lemezképben, mert csak a .NET core futtatókörnyezetre van szükségünk, ezért a dockerfile egy ideiglenes tároló használatára van megírva, amely az build-env nevű SDK-val van csomagolva az alkalmazás létrehozásához.

FROM mcr.microsoft.com/dotnet/core/aspnet:2.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "asp-net-getting-started.dll"]

Mivel az alkalmazás ASP.NET, megadunk egy képet, amely tartalmazza ezt a futtatókörnyezetet. Ezután átmásoljuk az összes fájlt az ideiglenes tároló kimeneti könyvtárából a végső tárolóba. A tárolót úgy konfiguráljuk, hogy az új alkalmazással fusson belépési pontként a tároló indításakor

Megírtuk a dockerfile-t egy többfázisú buildelésivégrehajtásához. A dockerfile végrehajtásakor az ideiglenes tárolót használja, build-env.NET Core 2.1 SDK-val hozza létre a mintaalkalmazást, majd másolja a kimeneti bináris fájlokat egy másik tárolóba, amely csak a .NET Core 2.1 futtatókörnyezetet tartalmazza, így minimalizáltuk a végső tároló méretét.

Az alkalmazás létrehozása és futtatása

A Dockerfile megírása után a Dockert a Docker-fájlra irányíthatjuk, és megmondhatjuk neki, hogy építse meg, majd futtassa az image-et.

  1. A parancssori ablakban lépjen arra a könyvtárra, amelyben a dockerfile található, majd futtassa a docker buildelési parancsot a tároló Dockerfile-ból való létrehozásához.

    docker build -t my-asp-app .
    
  2. Az újonnan létrehozott tároló futtatásához futtassa a docker parancsot.

    docker run -d -p 5000:80 --name myapp my-asp-app
    

    Bontsuk ki ezt a parancsot:

    • -d arra utasítja a Dockert, hogy futtassa a tárolót leválasztva, ami azt jelenti, hogy a tárolón belül egyetlen konzol sem csatlakozik a konzolhoz. A tároló a háttérben fut.
    • -p 5000:80 arra utasítja a Dockert, hogy a gazdagépen lévő 5000-s portot a tároló a 80-ra leképezze. Minden tároló saját IP-címet kap. Az ASP .NET alapértelmezés szerint a 80-as portot figyeli. A portleképezéssel a gazdagép IP-címére léphetünk a leképezett porton, és a Docker az összes forgalmat a tárolón belüli célportra továbbítja.
    • --name myapp arra utasítja a Dockert, hogy adjon egy kényelmes nevet a tárolónak a lekérdezéshez (ahelyett, hogy meg kellene keresnie a Docker által futásidőben hozzárendelt tárolóazonosítót).
    • A my-asp-app az az image, amelyet a Docker futtatni kíván. Ez az docker build folyamat csúcsaként létrehozott tárolórendszerkép.
  3. Nyisson meg egy webböngészőt, és navigáljon a(z) http://localhost:5000 webcímre a tárolóalapú alkalmazás megtekintéséhez.

    ASP.NET Core-weblap, amely a localhost-ból fut egy tárolóban

Következő lépések

  1. A következő lépés a tárolóalapú ASP.NET webalkalmazás közzététele egy privát beállításjegyzékben az Azure Container Registry használatával. Így üzembe helyezheti a szervezetében.

    Amikor eljut arra a szakaszra, ahol leküldi a tárolórendszerképet a beállításjegyzékbe, adja meg az imént csomagolt ASP.NET alkalmazás nevét (my-asp-app) a tárolóregisztrációs adatbázissal együtt (például: contoso-container-registry):

    docker tag my-asp-app contoso-container-registry.azurecr.io/my-asp-app:v1
    

    További alkalmazásminták és a hozzájuk tartozó dockerfile-fájlok megtekintéséhez tekintse meg további tárolómintákat.

  2. Miután közzétette az alkalmazást a tárolóregisztrációs adatbázisban, a következő lépés az alkalmazás üzembe helyezése az Azure Kubernetes Service-szel létrehozott Kubernetes-fürtön.