Rychlý úvod: Docker v sadě Visual Studio
V sadě Visual Studio můžete snadno vytvářet, ladit a spouštět kontejnerizované aplikace .NET, ASP.NET a ASP.NET Core a publikovat je do služby Azure Container Registry, Docker Hubu, Azure App Service nebo vlastního container Registry. V tomto článku publikujeme aplikaci ASP.NET Core do služby Azure Container Registry.
Požadavky
- Docker Desktop
- Visual Studio 2019 s nainstalovanými úlohami Webový vývoj, Azure Tools a/nebo multiplatformní vývoj pro .NET Core
- .NET Core vývojové nástroje pro vývoj s .NET Core
- Pro publikování do Azure Container Registry je potřeba mít předplatné Azure. zaregistrujte si bezplatnou zkušební verzi.
Instalace a nastavení
Při instalaci Dockeru si nejprve projděte informace v Docker Desktopu pro Windows: Co potřebujete vědět před instalací. Dále nainstalujte Docker Desktop.
Přidání projektu do kontejneru Dockeru
Vytvořte nový projekt pomocí šablony ASP.NET Core Web App nebo pokud chcete místo .NET Core použít .NET Framework, zvolte ASP.NET Web Application (.NET Framework).
Na obrazovce Vytvořit novou webovou aplikaci zkontrolujte, že je zaškrtnuté políčko Povolit podporu Dockeru.
Snímek obrazovky ukazuje .NET Core; Pokud používáte rozhraní .NET Framework, vypadá trochu jinak.
Vyberte požadovaný typ kontejneru (Windows nebo Linux) a klikněte na Vytvořit.
Přehled souboru Dockerfile
V projektu se vytvoří soubor Dockerfile, recept na vytvoření konečné image Dockeru. Pro pochopení příkazů v něm se podívejte na referenční dokument Dockerfile .
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
RUN dotnet restore "WebApplication1/WebApplication1.csproj"
COPY . .
WORKDIR "/src/WebApplication1"
RUN dotnet build "WebApplication1.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "WebApplication1.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]
Předchozí Dockerfile je založen na image dotnet/core/aspnet a obsahuje pokyny k úpravě základního image sestavením projektu a jeho přidáním do kontejneru. Pokud používáte rozhraní .NET Framework, základní image se bude lišit.
Když je zaškrtnuto políčko Konfigurovat pro HTTPS, Dockerfile zpřístupní dva porty. Jeden port se používá pro provoz HTTP; druhý port se používá pro HTTPS. Pokud políčko není zaškrtnuté, zobrazí se pro provoz HTTP jeden port (80).
Ladicí
V rozevíracím seznamu ladění na panelu nástrojů vyberte Docker a spusťte ladění aplikace. Může se zobrazit zpráva s výzvou k důvěryhodnosti certifikátu; zvolte, že chcete certifikát důvěřovat, abyste mohli pokračovat.
Možnost Nástroje kontejneru v okně Výstup ukazuje, jaké akce se provádějí. První stažení základní image může chvíli trvat, ale při dalších spuštěních je mnohem rychlejší.
Poznámka
Pokud potřebujete změnit porty pro ladění, můžete to udělat v launchSettings.json souboru. Viz Nastavení spuštění kontejneru.
Okno kontejnerů
Pokud máte Visual Studio 2019 verze 16.4 nebo novější, můžete pomocí okna Containers zobrazit spuštěné kontejnery na vašem počítači i image, které máte k dispozici.
Otevřete okno Kontejnery pomocí vyhledávacího pole v integrovaném vývojovém prostředí (stiskněte Ctrl+Q pro jeho použití), zadejte hledaný výraz container
a v seznamu zvolte okno Kontejnery.
Okno Kontejnerů můžete umístit na vhodném místě, například pod editorem, posunutím okna a sledováním vodítek jeho umístění.
V okně vyhledejte kontejner a projděte si jednotlivé karty, abyste mohli zobrazit proměnné prostředí, mapování portů, protokoly a systém souborů.
Další informace naleznete k tématu Použití okna Kontejnery.
Publikování imagí Dockeru
Po dokončení cyklu vývoje a ladění aplikace můžete vytvořit produkční image aplikace.
Změňte rozevírací seznam konfigurace na release a sestavte aplikaci.
Klikněte pravým tlačítkem na projekt v Průzkumníku řešení a zvolte Publikovat.
V dialogovém okně Publikovat vyberte kartu Docker Container Registry.
Zvolte Vytvořit nový registr služby Azure Container.
Vyplňte požadované hodnoty v vytvoření nového Azure Container Registry.
Nastavení Navrhovaná hodnota Popis předpona DNS Globálně jedinečný název Název, který jednoznačně identifikuje váš registr kontejneru. Předplatné Volba předplatného Předplatné Azure, které se má použít. skupina prostředků myResourceGroup Název skupiny prostředků, ve které se má vytvořit registr kontejneru. Zvolte Nová a vytvořte novou skupinu prostředků. SKU Standard Úroveň služby registru kontejneru Umístění Registru Umístění blízko vás Zvolte umístění v oblasti blízko vás nebo v blízkosti jiných služeb, které budou používat registr kontejneru. cs-CZ:
Klikněte na Vytvořit. V dialogovém okně Publikovat se teď zobrazuje vytvořený registr.
Zvolte Dokončit k dokončení procesu publikování obrazu kontejneru do nově vytvořeného registru v Azure.
Další kroky
Teď můžete načíst kontejner z registru do libovolného hostitele, který je schopen spouštět Docker image, například Azure Container Instances.
V sadě Visual Studio můžete snadno vytvářet, ladit a spouštět kontejnerizované aplikace .NET, ASP.NET a ASP.NET Core a publikovat je do služby Azure Container Registry, Docker Hubu, Azure App Service nebo vlastního container Registry. V tomto článku publikujete aplikaci ASP.NET Core do služby Azure Container Registry.
Požadavky
- Docker Desktop
- sady Visual Studio 2022 s nainstalovanou úlohou vývoje webuweb, azure Tools a/nebo úlohu vývoje desktopových aplikací .NET
- Pro publikování do Azure Container Registry je potřeba mít předplatné Azure. zaregistrujte si bezplatnou zkušební verzi.
Instalace a nastavení
Při instalaci Dockeru si nejprve projděte informace v Docker Desktopu pro Windows: Co potřebujete vědět před instalací. Dále nainstalujte Docker Desktop.
Přidání projektu do kontejneru Dockeru
Před vytvořením projektu sady Visual Studio se ujistěte, že na Desktopu Dockeru běží typ kontejnerů (Windows nebo Linux), které chcete použít v projektu sady Visual Studio.
Pokud chcete změnit typ kontejneru používaný v Docker Desktopu, klikněte pravým tlačítkem myši na ikonu Dockeru (velryba) na hlavním panelu a zvolte Přepnout na kontejnery Linuxu nebo Přepnout na kontejnery Windows.
Varování
Pokud po vytvoření projektu sady Visual Studio přepnete typ kontejneru, nemusí se načíst soubory obrazů Dockeru.
Vytvořte nový projekt pomocí šablony ASP.NET Core Web App nebo pokud chcete místo .NET Core použít .NET Framework, zvolte ASP.NET Web Application (.NET Framework).
Na obrazovce Vytvořit novou webovou aplikaci zkontrolujte, že je zaškrtnuté políčko Povolit podporu Dockeru.
Snímek obrazovky ukazuje nejnovější verzi s .NET 8.0. Pokud používáte rozhraní .NET Framework, dialogové okno vypadá trochu jinak.
Vyberte požadovaný typ kontejneru (Windows nebo Linux) a vyberte Vytvořit.
Přehled souboru Dockerfile
Visual Studio vytvoří v projektu dockerfile, který poskytuje recept na vytvoření konečné image Dockeru. Další informace najdete v referenčním souboru Dockerfile podrobnosti o příkazech použitých v souboru Dockerfile.
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 AS base
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0-nanoserver-1809 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["MyWepApp/MyWebApp.csproj", "MyWebApp/"]
RUN dotnet restore "./MyWebApp/./MyWebApp.csproj"
COPY . .
WORKDIR "/src/MyWebApp"
RUN dotnet build "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/build
# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/publish /p:UseAppHost=false
# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyWebApp.dll"]
Předchozí soubor Dockerfile vychází z obrazu Microsoft Container Registry (MCR) .NET 8 a obsahuje pokyny pro úpravu základního obrazu sestavením projektu s názvem MyWebApp
a jeho přidáním do kontejneru. Pokud používáte rozhraní .NET Framework, základní image se liší.
Když je zaškrtnuto políčko Konfigurovat pro HTTPS, Dockerfile zpřístupní dva porty. Jeden port se používá pro provoz HTTP; druhý port se používá pro HTTPS. Pokud políčko není zaškrtnuté, zobrazí se pro provoz HTTP jeden port (80).
Ve Visual Studiu 2022 verze 17.7 nebo novější můžete zaměřit se na .NET 8. V takovém případě máte výhodu, že budete moct aplikaci bezpečně spouštět jako normální uživatel, a ne se zvýšenými oprávněními. Výchozí soubor Dockerfile vygenerovaný sadou Visual Studio pro projekty .NET 8 je nakonfigurovaný tak, aby běžel jako normální uživatel. Pokud chcete toto chování povolit u existujícího projektu, přidejte řádek USER app
do souboru Dockerfile v základní imagi. Vzhledem k tomu, že je port 80 omezený pro běžné uživatele, zveřejňuje porty 8080 a 8081 místo 80 a 443. Port 8080 se používá pro provoz HTTP a port 8081 se používá pro HTTPS. Pokud chcete spustit jako normálního uživatele, musí kontejner používat základní image .NET 8 a aplikace musí běžet jako aplikace .NET 8. Při správné konfiguraci by váš soubor Dockerfile měl obsahovat kód jako v následujícím příkladu:
FROM mcr.microsoft.com/dotnet/aspnet:8.0-preview AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
Ladicí
V rozevíracím seznamu ladění na panelu nástrojů vyberte Docker a spusťte ladění aplikace. Může se zobrazit zpráva s výzvou k důvěryhodnosti certifikátu; zvolte, že chcete certifikát důvěřovat, abyste mohli pokračovat.
Možnost Nástroje kontejneru v okně Výstup ukazuje, jaké akce se provádějí. První stažení základní image může chvíli trvat, ale při dalších spuštěních je rychlejší.
Po dokončení sestavení se otevře prohlížeč a zobrazí domovskou stránku vaší aplikace. Na panelu Adresa prohlížeče se zobrazí adresa URL localhost
a číslo portu pro ladění.
Poznámka
Pokud potřebujete změnit porty pro ladění, můžete to udělat v launchSettings.json
souboru. Viz Nastavení spuštění kontejneru.
Okno kontejnerů
Pomocí okna Containers můžete zobrazit spuštěné kontejnery na vašem počítači a další image, které máte k dispozici.
Otevřete okno Kontejnery pomocí vyhledávacího pole v integrovaném vývojovém prostředí (stiskněte Ctrl+Q pro jeho použití), zadejte hledaný výraz container
a v seznamu zvolte okno Kontejnery.
Okno Kontejnerů můžete umístit na vhodném místě, například pod editorem, posunutím okna a sledováním vodítek jeho umístění.
V okně vyhledejte kontejner a projděte si jednotlivé karty, abyste mohli zobrazit proměnné prostředí, mapování portů, protokoly a systém souborů.
Další informace naleznete k tématu Použití okna Kontejnery.
Publikování imagí Dockeru
Po dokončení cyklu vývoje a ladění aplikace můžete vytvořit produkční image aplikace.
Změňte rozevírací seznam konfigurace na release a sestavte aplikaci.
Klikněte pravým tlačítkem na projekt v Průzkumníku řešení a zvolte Publikovat.
V dialogovém okně Publikovat vyberte kartu Docker Container Registry.
Zvolte Vytvořit nový registr služby Azure Container.
Vyplňte požadované hodnoty v vytvoření nového Azure Container Registry.
Nastavení Navrhovaná hodnota Popis předpona DNS Globálně jedinečný název Název, který jednoznačně identifikuje váš registr kontejneru. Předplatné Volba předplatného Předplatné Azure, které se má použít. skupina prostředků myResourceGroup Název skupiny prostředků, ve které se má vytvořit registr kontejneru. Zvolte Nová a vytvořte novou skupinu prostředků. SKU Standard Úroveň služby registru kontejneru Umístění Registru Umístění blízko vás Zvolte umístění v oblasti blízko vás nebo v blízkosti jiných služeb, které můžou používat registr kontejneru. cs-CZ:
Vyberte Vytvořit. V dialogovém okně Publikovat se teď zobrazuje vytvořený registr.
Zvolte Dokončit k dokončení procesu publikování obrazu kontejneru do nově vytvořeného registru v Azure.
Další kroky
Teď můžete načíst kontejner z registru do libovolného hostitele, který je schopen spouštět Docker image, například Azure Container Instances.
Další zdroje informací
- vývoj kontejnerů pomocí sady Visual Studio
- Vytvoření vícekontenerové aplikace pomocí Docker Compose
- řešení potíží s vývojem sady Visual Studio s využitím Dockeru
- úložiště GitHub Visual Studio Container Tools