Docker je kontejnerizační služba, která se používá pro spouštění aplikací v izolovaných prostředích zabalených se všemi závislostmi a kódem, které potřebuje ke svému fungování. Může spouštět všechny druhy aplikací, včetně programů založených na .NET pomocí runtime obrazů od společnosti Microsoft.
Dockerizing .NET
Společnost Microsoft poskytuje předpřipravené základní obrazy pro spouštění aplikací .NET. Nebudete muset instalovat běhové prostředí .NET nebo sadu SDK do kontejneru Docker, protože můžete jednoduše rozšířit základní bitovou kopii společnosti Microsoft o verzi .NET, kterou vaše aplikace používá.
Pokud neplánujete nasadit kontejnery Windows na server Windows, budete muset používat buď .NET Core, nebo .NET 5. Starší běhové prostředí .NET Framework není multiplatformní a nepoběží na kontejnerech založených na Linuxu.
Pokud nemáte na svém vývojovém počítači nainstalovaný Docker, budete si muset nainstalovat Docker Desktop, abyste měli přístup k CLI. Pokud používáte WSL v systému Windows, budete chtít povolit modul založený na WSL 2, který poskytuje lepší výkon.
Abychom věci otestovali, vytvoříme novou aplikaci ASP.NET API. Stejný obecný postup bude platit pro jakýkoli druh aplikace, protože vše, co Docker dělá, je spouštění sestavení, kdykoli sestavujete kontejner, a spouštění aplikace pomocí příkazu vstupního bodu.
Vytvořte nový soubor s názvem Dockerfile
v kořenovém adresáři vašeho projektu, kde se nachází vaše řešení. Vložte následující konfiguraci:
Z mcr.microsoft.com/dotnet/core/sdk AS build-envWORKDIR /app# Zkopírujte csproj a obnovteCOPY *.csproj ./RUN dotnet restore# Zkopírujte vše ostatní a buildCOPY . ./RUN dotnet publish -o out# Sestavení runtime imageFROM mcr.microsoft.com/dotnet/core/runtimeWORKDIR /appCOPY --from=build-env /app/out .ENTRYPOINT ["dotnet", "DockerTest.dll"]Tento Dockerfile stáhne bitovou kopii .NET Core SDK, aby provedl sestavení. Zkopíruje soubor
.csproj
přes a obnoví, poté zkopíruje vše ostatní a spustí sestavení. Poté vytvoří nový obraz z obrazu .NET Runtime a zkopíruje artefakty sestavení.Konečně, vstupní bod je zde definován jako
dotnet DockerTest.dll
. Tím se spustí webový server ASP.NET, ačkoli možná budete muset změnit parametry vaší aplikace nebo zadat úplně jiný příkaz vstupního bodu.Spuštění kontejneru můžete otestovat pomocí
docker container run
, předejte jej v ID kontejneru sestavení:kontejner ukotvovacího zařízení spustit containerid
U aplikace ASP.NET budete muset otevřít porty namapováním portu na hostiteli na port na kontejneru:
docker run -p 80:80 containeridMůžete si přečíst našeho průvodce prací s Docker a Dockerfiles, kde se dozvíte více.
Jak zabalit a přenést obrazy Dockeru z jednoho serveru na druhý Jak spustit NGINX Inside Docker (pro snadné automatické škálování)Docker