Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: Windows Server 2025, Windows Server 2022, Windows Server 2019, Windows Server 2016
W tym temacie opisano sposób tworzenia pakietu istniejącej przykładowej aplikacji .NET na potrzeby wdrożenia jako kontenera systemu Windows po skonfigurowaniu środowiska zgodnie z opisem w Rozpoczynanie pracy: Przygotowywanie systemu Windows dla kontenerówi uruchamianie pierwszego kontenera zgodnie z opisem w Uruchamianie pierwszego kontenera systemu Windows.
Potrzebny będzie również system kontroli źródła git zainstalowany na komputerze. Aby go zainstalować, odwiedź witrynę Git.
Klonowanie przykładowego kodu z usługi GitHub
Cały przykładowy kod źródłowy kontenera jest przechowywany w Virtualization-Documentation repozytorium git w folderze o nazwie windows-container-samples.
Otwórz sesję programu PowerShell i zmień katalogi na folder, w którym chcesz przechowywać to repozytorium. (Inne typy okien wiersza polecenia działają również, ale nasze przykładowe polecenia używają programu PowerShell).
Sklonuj repozytorium do bieżącego katalogu roboczego:
git clone https://github.com/MicrosoftDocs/Virtualization-Documentation.gitPrzejdź do przykładowego katalogu znajdującego się w obszarze
Virtualization-Documentation\windows-container-samples\asp-net-getting-startedi utwórz plik Dockerfile przy użyciu następujących poleceń.dockerfile jest jak plik make — jest to lista instrukcji, które informują aparat kontenera, jak skompilować obraz kontenera.
# 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
Zapisywanie pliku Dockerfile
Otwórz właśnie utworzony plik Dockerfile z dowolnym edytorem tekstów, a następnie dodaj następującą zawartość:
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"]
Rozłóżmy to na linie i wyjaśnijmy, co robi każda z instrukcji.
FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build-env
WORKDIR /app
Pierwsza grupa wierszy deklaruje, którego obrazu podstawowego użyjemy, aby zbudować na nim kontener. Jeśli system lokalny nie ma jeszcze tego obrazu, platforma Docker automatycznie spróbuje go pobrać. Zestaw mcr.microsoft.com/dotnet/core/sdk:2.1 jest dostarczany z zainstalowanym SDK platformy .NET Core 2.1, dlatego nadaje się do tworzenia projektów ASP .NET Core przeznaczonych dla wersji 2.1. Następna instrukcja zmienia katalog roboczy w naszym kontenerze na /app, więc wszystkie polecenia wykonywane za tym razem są wykonywane w tym kontekście.
COPY *.csproj ./
RUN dotnet restore
Następnie te instrukcje kopiują pliki csproj do katalogu build-env kontenera /app. Po skopiowaniu tego pliku platforma .NET odczyta go, a następnie wyjedzie i pobierze wszystkie zależności i narzędzia wymagane przez nasz projekt.
COPY . ./
RUN dotnet publish -c Release -o out
Gdy platforma .NET pobierze wszystkie zależności do kontenera build-env, następna instrukcja kopiuje wszystkie pliki źródłowe projektu do kontenera. Następnie informujemy platformę .NET o opublikowaniu aplikacji przy użyciu konfiguracji wydania i określeniu ścieżki wyjściowej.
Kompilacja powinna zakończyć się pomyślnie. Teraz musimy skompilować końcowy obraz.
Napiwek
Ten szybki start tworzy projekt .NET Core ze źródła. Podczas kompilowania obrazów kontenerów warto uwzględnić tylko ładunek produkcyjny i jego zależności w obrazie kontenera. Nie chcemy, aby zestaw .NET Core SDK był uwzględniony w naszym końcowym obrazie, ponieważ potrzebujemy tylko środowiska uruchomieniowego platformy .NET Core, więc plik dockerfile został napisany tak, aby używał tymczasowego kontenera zawierającego zestaw SDK o nazwie build-env do zbudowania aplikacji.
FROM mcr.microsoft.com/dotnet/core/aspnet:2.1
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "asp-net-getting-started.dll"]
Ponieważ nasza aplikacja jest ASP.NET, określamy obraz z tym środowiskiem uruchomieniowym. Następnie skopiujemy wszystkie pliki z katalogu wyjściowego naszego kontenera tymczasowego do naszego końcowego kontenera. Konfigurujemy kontener do uruchamiania przy użyciu nowej aplikacji jako punktu wejścia podczas uruchamiania kontenera
Napisaliśmy dockerfile, aby wykonać wieloetapową kompilację . Po wykonaniu pliku dockerfile używa kontenera tymczasowego, build-envz zestawem SDK platformy .NET Core 2.1 w celu skompilowania przykładowej aplikacji, a następnie skopiowania wyjściowych plików binarnych do innego kontenera zawierającego tylko środowisko uruchomieniowe platformy .NET Core 2.1, aby zminimalizować rozmiar końcowego kontenera.
Kompilowanie i uruchamianie aplikacji
Po zapisaniu pliku Dockerfile możemy wskazać Dockerowi nasz Dockerfile i polecić mu zbudowanie, a następnie uruchomienie naszego obrazu.
W oknie wiersza polecenia przejdź do katalogu, w którym znajduje się plik dockerfile, a następnie uruchom polecenie docker build, aby skompilować kontener z pliku Dockerfile.
docker build -t my-asp-app .Aby uruchomić nowo utworzony kontener, użyj polecenia docker run.
docker run -d -p 5000:80 --name myapp my-asp-appPrzeanalizujmy to polecenie:
-
-dnakazuje Dockerowi uruchomienie kontenera w trybie odłączonym, co oznacza, że konsola nie jest połączona z konsolą wewnątrz kontenera. Kontener działa w tle. -
-p 5000:80nakazuje Dockerowi zamapować port 5000 na hoście na port 80 w kontenerze. Każdy kontener pobiera własny adres IP. Platforma ASP .NET domyślnie nasłuchuje na porcie 80. Mapowanie portów umożliwia przejście do adresu IP hosta na zamapowanym porcie, a platforma Docker przekaże cały ruch do portu docelowego wewnątrz kontenera. -
--name myappinformuje Docker, aby nadał temu kontenerowi wygodną nazwę do zapytań (zamiast przeszukiwać identyfikator kontenera przypisany podczas uruchamiania przez Docker). -
my-asp-appto obraz, który chcemy uruchomić na platformie Docker. Jest to obraz kontenera utworzony jako kulminacja procesudocker build.
-
Otwórz przeglądarkę internetową i przejdź do
http://localhost:5000, aby wyświetlić aplikację konteneryzowaną.
Następne kroki
Następnym krokiem jest opublikowanie konteneryzowanej aplikacji internetowej ASP.NET w prywatnym rejestrze przy użyciu usługi Azure Container Registry. Umożliwia to wdrożenie go w organizacji.
W sekcji, w której wypychasz obraz kontenera do rejestru, określ nazwę dopiero co spakowanej aplikacji ASP.NET (
my-asp-app) wraz z rejestrem kontenerów (na przykład:contoso-container-registry):docker tag my-asp-app contoso-container-registry.azurecr.io/my-asp-app:v1Aby wyświetlić więcej przykładów aplikacji i skojarzonych z nimi plików dockerfile, zobacz dodatkowych przykładów kontenerów.
Po opublikowaniu aplikacji w rejestrze kontenerów następnym krokiem jest wdrożenie aplikacji w klastrze Kubernetes utworzonym za pomocą usługi Azure Kubernetes Service.