Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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.
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.)
Klónozd a kódtárat az aktuális munkakönyvtáradba:
git clone https://github.com/MicrosoftDocs/Virtualization-Documentation.gitLépjen a
Virtualization-Documentation\windows-container-samples\asp-net-getting-startedalatt 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.
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 .Az újonnan létrehozott tároló futtatásához futtassa a docker parancsot.
docker run -d -p 5000:80 --name myapp my-asp-appBontsuk ki ezt a parancsot:
-
-darra 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:80arra 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 myapparra 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-appaz az image, amelyet a Docker futtatni kíván. Ez azdocker buildfolyamat csúcsaként létrehozott tárolórendszerkép.
-
Nyisson meg egy webböngészőt, és navigáljon a(z)
http://localhost:5000webcímre a tárolóalapú alkalmazás megtekintéséhez.
Következő lépések
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:v1További alkalmazásminták és a hozzájuk tartozó dockerfile-fájlok megtekintéséhez tekintse meg további tárolómintákat.
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.