Sdílet prostřednictvím


Migrace aplikací ASP.NET MVC do kontejnerů s Windows

Spuštění existující aplikace založené na rozhraní .NET Framework v kontejneru Windows nevyžaduje žádné změny vaší aplikace. Pokud chcete aplikaci spustit v kontejneru Windows, vytvoříte image Dockeru obsahující vaši aplikaci a spustíte kontejner. Toto téma vysvětluje, jak použít existující aplikaci ASP.NET MVC a nasadit ji v kontejneru Windows.

Začnete s existující aplikací ASP.NET MVC a pak sestavíte publikované prostředky pomocí sady Visual Studio. Pomocí Dockeru vytvoříte image, která obsahuje a spustí vaši aplikaci. Přejdete na web spuštěný v kontejneru Windows a ověříte, že aplikace funguje.

Tento článek předpokládá základní znalost Dockeru. Informace o Dockeru najdete v článku Docker Overview (Přehled Dockeru).

Aplikace, kterou spustíte v kontejneru, je jednoduchý web, který náhodně odpovídá na otázky. Tato aplikace je základní aplikace MVC bez ověřování nebo úložiště databáze; umožňuje zaměřit se na přesun webové vrstvy do kontejneru. V budoucích tématech se dozvíte, jak přesunout a spravovat trvalé úložiště v kontejnerizovaných aplikacích.

Přesunutí aplikace zahrnuje tyto kroky:

  1. Vytvoření úlohy publikování pro sestavení prostředků pro image
  2. Vytvoření image Dockeru, která spustí vaši aplikaci.
  3. Spuštění kontejneru Dockeru, který spouští vaši image.
  4. Ověření aplikace pomocí prohlížeče

Hotová aplikace je na GitHubu.

Požadavky

Vývojový počítač musí mít následující software:

Důležité

Pokud používáte Windows Server 2016, postupujte podle pokynů pro nasazení hostitele kontejneru – Windows Server.

Po nainstalování a spuštění Dockeru klikněte pravým tlačítkem myši na ikonu na hlavním panelu a vyberte Switch to Windows containers (Přepnout na kontejnery Windows). To se vyžaduje pro spuštění imagí Dockeru založených na Windows. Provedení tohoto příkazu trvá několik sekund:

Kontejner Windows

Publikování skriptu

Shromážděte na jednom místě všechny prostředky, které potřebujete nahrát do image Dockeru. Pomocí příkazu Publikovat v sadě Visual Studio můžete vytvořit profil publikování pro vaši aplikaci. Tento profil vloží všechny prostředky do jednoho stromu adresáře, který zkopírujete do cílové image později v tomto kurzu.

Kroky publikování

  1. Klikněte pravým tlačítkem myši na webový projekt v sadě Visual Studio a vyberte Publikovat.
  2. Klikněte na tlačítko Vlastní profil a jako metodu vyberte Systém souborů.
  3. Zvolte adresář. Podle konvence se stažená ukázka používá bin\Release\PublishOutput.

Publikování připojení

Otevřete oddíl Možnosti publikování souboru na kartě Nastavení. Během publikování vyberte Předkompil. Tato optimalizace znamená, že budete kompilovat zobrazení v kontejneru Dockeru a kopírujete předkompilovaná zobrazení.

Nastavení publikování

Klikněte na Publikovat a Visual Studio zkopíruje všechny potřebné prostředky do cílové složky.

Sestavení image

Vytvořte nový soubor s názvem Dockerfile , který definuje vaši image Dockeru. Soubor Dockerfile obsahuje pokyny k sestavení konečné image a obsahuje všechny názvy základních imagí, požadované komponenty, aplikaci, kterou chcete spustit, a další konfigurační image. Dockerfile je vstup příkazu docker build , který vytvoří image.

V tomto cvičení vytvoříte image založenou na imagi umístěné v microsoft/aspnet Docker Hubu. Základní image mcr.microsoft.com/dotnet/framework/aspnet:4.8je image Windows Serveru. Obsahuje Windows Server Core, IIS a ASP.NET 4.8. Když tuto image spustíte ve svém kontejneru, automaticky se spustí služba IIS a nainstalované weby.

Soubor Dockerfile, který vytvoří vaši image, vypadá takto:

# 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

V tomto souboru Dockerfile není žádný příkaz ENTRYPOINT. Žádný nepotřebujete. Při spuštění Windows Serveru se službou IIS je proces služby IIS vstupním bodem, který je nakonfigurovaný tak, aby se spustil v základní imagi aspnet.

Spuštěním příkazu Docker build vytvořte image, na které běží vaše ASP.NET aplikace. Uděláte to tak, že otevřete okno PowerShellu v adresáři projektu a do adresáře řešení zadáte následující příkaz:

docker build -t mvcrandomanswers .

Tento příkaz sestaví novou image podle pokynů v souboru Dockerfile a pojme image jako mvcrandomanswerswers (-t tagging). To může zahrnovat načtení základní image z Docker Hubu a následné přidání aplikace do této image.

Po dokončení příkazu můžete příkaz spustit docker images a zobrazit informace o nové imagi:

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

ID IMAGE se bude na vašem počítači lišit. Teď aplikaci spustíme.

Spuštění kontejneru

Spuštěním následujícího docker run příkazu spusťte kontejner:

docker run -d --name randomanswers mvcrandomanswers

Argument -d říká Dockeru, aby spustil image v odpojeném režimu. To znamená, že image Dockeru běží odpojená od aktuálního prostředí.

V mnoha příkladech Dockeru se může zobrazit -p pro mapování kontejnerů a hostitelských portů. Výchozí image aspnet už nakonfigurovala kontejner tak, aby naslouchal na portu 80 a zpřístupnil ho.

Získáte --name randomanswers název spuštěného kontejneru. Tento název můžete použít místo ID kontejneru ve většině příkazů.

Jedná se mvcrandomanswers o název image, která se má spustit.

Ověření v prohlížeči

Jakmile se kontejner spustí, připojte se ke spuštěném kontejneru pomocí http://localhost uvedeného příkladu. Zadejte tuto adresu URL do prohlížeče a měli byste vidět spuštěný web.

Poznámka:

Některé servery VPN nebo proxy software vám můžou bránit v navigaci na vaši lokalitu. Můžete ho dočasně zakázat, abyste měli jistotu, že kontejner funguje.

Ukázkový adresář na GitHubu obsahuje skript PowerShellu, který spouští tyto příkazy za vás. Otevřete okno PowerShellu, změňte adresář na adresář řešení a zadejte:

./run.ps1

Výše uvedený příkaz sestaví image, zobrazí seznam imagí na vašem počítači a spustí kontejner.

Pokud chcete kontejner zastavit, zadejte docker stop příkaz:

docker stop randomanswers

Pokud chcete kontejner odebrat, zadejte docker rm příkaz:

docker rm randomanswers