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 spusťte kontejner. Toto téma vysvětluje, jak vzít existující ASP.NET aplikaci MVC a nasadit ji do 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 spouští 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řesun aplikace zahrnuje tyto kroky:
- Vytvoření úlohy publikování pro sestavení prostředků pro image
- Sestavení image Dockeru, která spustí vaši aplikaci.
- Spuštění kontejneru Dockeru, který spouští vaši image
- 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:
- Windows 10 Anniversary Update (nebo vyšší) nebo Windows Server 2016 (nebo vyšší)
- Docker pro Windows – verze Stabilní 1.13.0 nebo 1.12 Beta 26 (nebo novější verze)
- Visual Studio 2017
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:
Přepnutí
Publikovat skript
Shromážděte na jednom místě všechny prostředky, které potřebujete nahrát do image Dockeru. K vytvoření profilu publikování pro vaši aplikaci můžete použít příkaz Publikovat v sadě Visual Studio. Tento profil umístí všechny prostředky do jednoho adresářového stromu, který zkopírujete do cílové image později v tomto kurzu.
Kroky publikování
- Klikněte pravým tlačítkem na webový projekt v sadě Visual Studio a vyberte Publikovat.
- Klikněte na tlačítko Vlastní profil a jako metodu vyberte Systém souborů .
- Zvolte adresář. Podle konvence stažené ukázky používá
bin\Release\PublishOutput
.
Otevřete oddíl Možnosti publikování souboru na kartě Nastavení . Během publikování vyberte Předkompilovat. Tato optimalizace znamená, že budete kompilovat zobrazení v kontejneru Dockeru a kopírujete předkompilovaná zobrazení.
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 image Dockeru. Dockerfile obsahuje pokyny k sestavení konečné image a obsahuje všechny základní názvy imagí, požadované komponenty, aplikaci, kterou chcete spustit, a další konfigurační image. Dockerfile je vstup do docker build
příkazu, který image vytvoří.
V tomto cvičení vytvoříte image založenou na imagi microsoft/aspnet
umístěné na Docker Hub.
Základní image microsoft/aspnet
je image Windows Serveru. Obsahuje Windows Server Core, IIS a ASP.NET 4.7.2. Když tuto image spustíte v kontejneru, automaticky se spustí služba IIS a nainstalované weby.
Soubor Dockerfile, který vytváří vaši image, vypadá takto:
# The `FROM` instruction specifies the base image. You are
# extending the `microsoft/aspnet` image.
FROM microsoft/aspnet
# 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 nakonfigurován 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 aplikace ASP.NET. 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 mvcrandomanswers. To může zahrnovat stažení základní image z Docker Hub a následné přidání aplikace do této image.
Po dokončení příkazu můžete spuštěním docker images
příkazu zobrazit informace o nové imagi:
REPOSITORY TAG IMAGE ID CREATED SIZE
mvcrandomanswers latest 86838648aab6 2 minutes ago 10.1 GB
ID IMAGE se na vašem počítači bude lišit. Teď spustíme aplikaci.
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 režimu odpojení. To znamená, že image Dockeru běží odpojená od aktuálního prostředí.
V mnoha příkladech dockeru se může zobrazit hodnota -p pro mapování portů kontejneru a hostitele. Výchozí image aspnet už nakonfigurovala kontejner tak, aby naslouchal na portu 80 a zpřístupnil ho.
The --name randomanswers
dává název spuštěného kontejneru. Tento název můžete použít místo ID kontejneru ve většině příkazů.
Je mvcrandomanswers
název obrázku, který se má spustit.
Ověření v prohlížeči
Jakmile se kontejner spustí, připojte se ke spuštěnému kontejneru pomocí http://localhost
uvedeného příkladu. Zadejte tuto adresu URL do prohlížeče a měl by se zobrazit spuštěný web.
Poznámka
V přechodu na web vám může bránit některý vpn nebo proxy software. Můžete ho dočasně zakázat, abyste měli jistotu, že váš kontejner funguje.
Ukázkový adresář na GitHubu obsahuje powershellový skript , který tyto příkazy spustí 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 příkaz docker stop
:
docker stop randomanswers
Pokud chcete kontejner odebrat, spusťte příkaz docker rm
:
docker rm randomanswers
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro