Udostępnij za pośrednictwem


Migrowanie aplikacji ASP.NET MVC do kontenerów systemu Windows

Uruchamianie istniejącej aplikacji opartej na programie .NET Framework w kontenerze systemu Windows nie wymaga żadnych zmian w aplikacji. Aby uruchomić aplikację w kontenerze systemu Windows, należy utworzyć obraz platformy Docker zawierający aplikację i uruchomić kontener. W tym temacie wyjaśniono, jak zastosować istniejącą aplikację MVC ASP.NET i wdrożyć ją w kontenerze systemu Windows.

Zacznij od istniejącej aplikacji MVC ASP.NET, a następnie skompilujesz opublikowane zasoby przy użyciu programu Visual Studio. Użyj platformy Docker, aby utworzyć obraz zawierający i uruchamiający aplikację. Przejdziesz do witryny uruchomionej w kontenerze systemu Windows i sprawdzisz, czy aplikacja działa.

W tym artykule przyjęto założenie, że masz podstawową wiedzą dotyczącą platformy Docker. Aby uzyskać informacje dotyczące platformy Docker, przeczytaj artykuł Docker Overview (Przegląd platformy Docker).

Aplikacja uruchamiana w kontenerze jest prostą witryną internetową, która losowo odpowiada na pytania. Ta aplikacja jest podstawową aplikacją MVC bez uwierzytelniania ani magazynu bazy danych; Umożliwia skoncentrowanie się na przeniesieniu warstwy internetowej do kontenera. W przyszłych tematach pokazano, jak przenosić magazyn trwały i zarządzać nim w konteneryzowanych aplikacjach.

Przeniesienie aplikacji obejmuje następujące kroki:

  1. Tworzenie zadania publikowania w celu skompilowania zasobów dla obrazu.
  2. Kompilowanie obrazu platformy Docker, który będzie uruchamiał aplikację.
  3. Uruchamianie kontenera platformy Docker, który uruchamia obraz.
  4. Weryfikowanie aplikacji przy użyciu przeglądarki.

Zakończona aplikacja znajduje się w witrynie GitHub.

Wymagania wstępne

Maszyna deweloperza musi mieć następujące oprogramowanie:

Ważne

Jeśli używasz systemu Windows Server 2016, postępuj zgodnie z instrukcjami dotyczącymi wdrażania hosta kontenera — Windows Server.

Po zainstalowaniu i uruchomieniu programu Docker kliknij prawym przyciskiem myszy jego ikonę na pasku zadań i wybierz pozycję Switch to Windows containers (Przełącz na kontenery systemu Windows). Jest to wymagane do uruchomienia obrazów Docker opartych na systemie Windows. Wykonanie tego polecenia zajmuje kilka sekund:

Kontener systemu Windows

Skrypt publikowania

Zbierz w jednym miejscu wszystkie elementy zawartości konieczne do załadowania do obrazu Docker. Aby utworzyć profil publikowania dla aplikacji, możesz użyć polecenia Publikuj w programie Visual Studio. Ten profil spowoduje umieszczenie wszystkich zasobów w jednym drzewie katalogów skopiowanych do obrazu docelowego w dalszej części tego samouczka.

Kroki publikowania

  1. Kliknij prawym przyciskiem myszy projekt internetowy w programie Visual Studio, a następnie wybierz pozycję Publikuj.
  2. Kliknij przycisk Profil niestandardowy, a następnie wybierz pozycję System plików jako metodę.
  3. Wybierz katalog. Zgodnie z konwencją pobrany przykład używa metody bin\Release\PublishOutput.

Publikowanie połączenia

Otwórz sekcję Opcje publikowania pliku na karcie Ustawienia . Wybierz pozycję Prekompiluj podczas publikowania. Ta optymalizacja oznacza, że będziesz kompilować widoki w kontenerze platformy Docker, kopiujesz wstępnie skompilowane widoki.

Ustawienia publikowania

Kliknij pozycję Publikuj, a program Visual Studio skopiuje wszystkie potrzebne zasoby do folderu docelowego.

Tworzenie obrazu

Utwórz nowy plik o nazwie Dockerfile , aby zdefiniować obraz platformy Docker. Plik Dockerfile zawiera instrukcje dotyczące kompilowania obrazu końcowego i zawiera wszystkie nazwy obrazów podstawowych, wymagane składniki, aplikację, którą chcesz uruchomić, oraz inne obrazy konfiguracji. Plik Dockerfile to dane wejściowe docker build polecenia, które tworzy obraz.

W tym ćwiczeniu utworzysz obraz na podstawie obrazu znajdującego microsoft/aspnet się w usłudze Docker Hub. Obraz podstawowy, mcr.microsoft.com/dotnet/framework/aspnet:4.8, jest obrazem systemu Windows Server. Zawiera system Windows Server Core, IIS i ASP.NET 4.8. Po uruchomieniu tego obrazu w kontenerze program automatycznie uruchomi usługi IIS i zainstalowane witryny internetowe.

Plik Dockerfile tworzący obraz wygląda następująco:

# The `FROM` instruction specifies the base image. You are
# extending the `mcr.microsoft.com/dotnet/framework/aspnet:4.8` image.

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8

# The final instruction copies the site you published earlier into the container.
COPY ./bin/Release/PublishOutput/ /inetpub/wwwroot

W tym pliku Dockerfile nie ma polecenia ENTRYPOINT. Nie jest ono potrzebne. W przypadku uruchamiania systemu Windows Server z usługami IIS proces usług IIS jest punktem wejścia skonfigurowanym do uruchamiania w obrazie podstawowym aspnet.

Uruchom polecenie kompilacji platformy Docker, aby utworzyć obraz, który uruchamia aplikację ASP.NET. W tym celu otwórz okno programu PowerShell w katalogu projektu i wpisz następujące polecenie w katalogu rozwiązania:

docker build -t mvcrandomanswers .

To polecenie skompiluje nowy obraz przy użyciu instrukcji w pliku Dockerfile, nazewnictwa (-t tagowania) obrazu jako mvcrandomanswers. Może to obejmować ściąganie obrazu podstawowego z usługi Docker Hub, a następnie dodawanie aplikacji do tego obrazu.

Po zakończeniu docker images tego polecenia możesz uruchomić polecenie , aby wyświetlić informacje o nowym obrazie:

REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
mvcrandomanswers              latest              86838648aab6        2 minutes ago       10.1 GB

Identyfikator obrazu będzie inny na twojej maszynie. Teraz uruchomimy aplikację.

Uruchamianie kontenera

Uruchom kontener, wykonując następujące docker run polecenie:

docker run -d --name randomanswers mvcrandomanswers

Argument -d informuje platformę Docker o uruchomieniu obrazu w trybie odłączonym. Oznacza to, że obraz platformy Docker jest odłączony od bieżącej powłoki.

W wielu przykładach platformy Docker można zobaczyć -p, aby mapować kontener i porty hosta. Domyślny obraz aspnet skonfigurował już kontener do nasłuchiwania na porcie 80 i uwidacznia go.

Element --name randomanswers nadaje nazwę uruchomionego kontenera. Możesz użyć tej nazwy zamiast identyfikatora kontenera w większości poleceń.

Jest mvcrandomanswers to nazwa obrazu do uruchomienia.

Weryfikowanie w przeglądarce

Po uruchomieniu kontenera nawiąż połączenie z uruchomionym kontenerem przy użyciu http://localhost pokazanego przykładu. Wpisz ten adres URL w przeglądarce i powinien zostać wyświetlona uruchomiona witryna.

Uwaga

Niektóre oprogramowanie sieci VPN lub serwera proxy może uniemożliwić przejście do witryny. Możesz tymczasowo go wyłączyć, aby upewnić się, że kontener działa.

Przykładowy katalog w usłudze GitHub zawiera skrypt programu PowerShell, który wykonuje te polecenia. Otwórz okno programu PowerShell, zmień katalog na katalog rozwiązania i wpisz:

./run.ps1

Powyższe polecenie kompiluje obraz, wyświetla listę obrazów na maszynie i uruchamia kontener.

Aby zatrzymać kontener, wydaj docker stop polecenie:

docker stop randomanswers

Aby usunąć kontener, wydaj docker rm polecenie:

docker rm randomanswers