Szybki start: platforma Docker w programie Visual Studio
Za pomocą programu Visual Studio można łatwo kompilować, debugować i uruchamiać konteneryzowane aplikacje .NET, ASP.NET i ASP.NET Core oraz publikować je w usłudze Azure Container Registry, Docker Hub, aplikacja systemu Azure Service lub własnym rejestrze kontenerów. W tym artykule opublikujemy aplikację ASP.NET Core w usłudze Azure Container Registry.
Wymagania wstępne
- Docker Desktop
- Program Visual Studio 2019 z zainstalowanym pakietem roboczym Tworzenie aplikacji internetowych, narzędzi platformy Azure i/lub pakietem roboczym programowania dla wielu platform .NET Core
- .NET Core Development Tools for development tools for development with .NET Core (Narzędzia programistyczne .NET Core do programowania za pomocą platformy .NET Core)
- Aby opublikować w usłudze Azure Container Registry, subskrypcja platformy Azure. Utwórz konto w celu uzyskania bezpłatnej wersji próbnej.
Instalacja i konfiguracja
W przypadku instalacji platformy Docker najpierw zapoznaj się z informacjami w witrynie Docker Desktop dla systemu Windows: co należy wiedzieć przed zainstalowaniem. Następnie zainstaluj program Docker Desktop.
Dodawanie projektu do kontenera platformy Docker
Utwórz nowy projekt przy użyciu szablonu aplikacji internetowej platformy ASP.NET Core lub jeśli chcesz użyć programu .NET Framework zamiast platformy .NET Core, wybierz pozycję ASP.NET Aplikacja internetowa (.NET Framework).
Na ekranie Tworzenie nowej aplikacji internetowej upewnij się, że zaznaczono pole wyboru Włącz obsługę platformy Docker.
Zrzut ekranu przedstawia platformę .NET Core; Jeśli używasz programu .NET Framework, wygląda nieco inaczej.
Wybierz odpowiedni typ kontenera (Windows lub Linux), a następnie kliknij przycisk Utwórz.
Plik Dockerfile — przegląd
Plik Dockerfile, przepis na utworzenie końcowego obrazu platformy Docker, jest tworzony w projekcie. Zapoznaj się z dokumentacją pliku Dockerfile, aby zapoznać się z poleceniami w nim.:
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"]
Powyższy plik Dockerfile jest oparty na obrazie dotnet/core/aspnet i zawiera instrukcje dotyczące modyfikowania obrazu podstawowego przez kompilowanie projektu i dodawanie go do kontenera. Jeśli używasz programu .NET Framework, obraz podstawowy będzie inny.
Po zaznaczeniu pola wyboru Konfiguruj pod kątem protokołu HTTPS w oknie dialogowym nowego projektu plik Dockerfile uwidacznia dwa porty. Jeden port jest używany na potrzeby ruchu HTTP, a drugi na potrzeby protokołu HTTPS. Jeśli pole wyboru nie jest zaznaczone, dla ruchu HTTP jest uwidoczniony pojedynczy port (80).
Debugowanie
Wybierz pozycję Docker z listy rozwijanej debugowania na pasku narzędzi i rozpocznij debugowanie aplikacji. Może zostać wyświetlony komunikat z monitem o zaufanie certyfikatowi; wybierz opcję zaufania certyfikatowi, aby kontynuować.
Opcja Narzędzia kontenera w oknie Dane wyjściowe pokazuje, jakie akcje mają miejsce. Po raz pierwszy pobranie obrazu podstawowego może zająć trochę czasu, ale jest znacznie szybsze w kolejnych uruchomieniach.
Uwaga
Jeśli musisz zmienić porty na potrzeby debugowania, możesz to zrobić w pliku launchSettings.json . Zobacz Ustawienia uruchamiania kontenera.
Okno Kontenery
Jeśli masz program Visual Studio 2019 w wersji 16.4 lub nowszej, możesz użyć okna Kontenery, aby wyświetlić uruchomione kontenery na maszynie, a także dostępne obrazy.
Otwórz okno Kontenery przy użyciu pola wyszukiwania w środowisku IDE (naciśnij Ctrl+Q, aby go użyć), wpisz , container
a następnie wybierz okno Kontenery z listy.
Okno Kontenery można zainstalować w wygodnym miejscu, takim jak poniżej edytora, przenosząc je i postępując zgodnie z przewodnikami umieszczania okien.
W oknie znajdź kontener i przejdź przez każdą kartę, aby wyświetlić zmienne środowiskowe, mapowania portów, dzienniki i system plików.
Aby uzyskać więcej informacji, zobacz Używanie okna Kontenery.
Publikowanie obrazów platformy Docker
Po zakończeniu cyklu tworzenia i debugowania aplikacji możesz utworzyć obraz produkcyjny aplikacji.
Zmień listę rozwijaną konfiguracji na Wydanie i skompiluj aplikację.
Kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań i wybierz polecenie Publikuj.
W oknie dialogowym Publikowanie wybierz kartę Docker Container Registry.
Wybierz pozycję Utwórz nowy rejestr kontenerów platformy Azure.
Wypełnij żądane wartości w obszarze Tworzenie nowego rejestru kontenerów platformy Azure.
Ustawienie Sugerowana wartość opis Prefiks DNS Nazwa unikatowa w skali globalnej Nazwa, która jednoznacznie identyfikuje rejestr kontenerów. Subskrypcja Wybierz swoją subskrypcję Subskrypcja platformy Azure, która ma być używana. Grupa zasobów myResourceGroup Nazwa grupy zasobów, w której ma zostać utworzony rejestr kontenerów. Wybierz pozycję Nowa, aby utworzyć nową grupę zasobów. SKU Standardowa Warstwa usługi rejestru kontenerów Lokalizacja rejestru Blisko Ciebie znajduje się lokalizacja Wybierz lokalizację w regionie w pobliżu ciebie lub w pobliżu innych usług, które będą korzystać z rejestru kontenerów. Kliknij pozycję Utwórz. W oknie dialogowym Publikowanie zostanie wyświetlony utworzony rejestr.
Wybierz pozycję Zakończ , aby ukończyć proces publikowania obrazu kontenera w nowo utworzonym rejestrze na platformie Azure.
Następne kroki
Teraz możesz ściągnąć kontener z rejestru do dowolnego hosta, który może uruchamiać obrazy platformy Docker, na przykład azure Container Instances.
Za pomocą programu Visual Studio można łatwo kompilować, debugować i uruchamiać konteneryzowane aplikacje .NET, ASP.NET i ASP.NET Core oraz publikować je w usłudze Azure Container Registry, Docker Hub, aplikacja systemu Azure Service lub własnym rejestrze kontenerów. W tym artykule opublikujesz aplikację ASP.NET Core w usłudze Azure Container Registry.
Wymagania wstępne
- Docker Desktop
- Program Visual Studio 2022 z zainstalowanym pakietem roboczym Tworzenie aplikacji internetowych, narzędzi platformy Azure i/lub pakietem roboczym programowanie aplikacji klasycznych .NET
- Aby opublikować w usłudze Azure Container Registry, subskrypcja platformy Azure. Utwórz konto w celu uzyskania bezpłatnej wersji próbnej.
Instalacja i konfiguracja
W przypadku instalacji platformy Docker najpierw zapoznaj się z informacjami w witrynie Docker Desktop dla systemu Windows: co należy wiedzieć przed zainstalowaniem. Następnie zainstaluj program Docker Desktop.
Dodawanie projektu do kontenera platformy Docker
Przed utworzeniem projektu programu Visual Studio upewnij się, że program Docker Desktop uruchamia typ kontenerów (Windows lub Linux), które mają być używane w projekcie programu Visual Studio.
Aby zmienić typ kontenera używany przez program Docker Desktop, kliknij prawym przyciskiem myszy ikonę platformy Docker (wieloryb) na pasku zadań i wybierz pozycję Przełącz do kontenerów systemu Linux lub Przełącz do kontenerów systemu Windows.
Ostrzeżenie
Jeśli zmienisz typ kontenera po utworzeniu projektu programu Visual Studio, ładowanie plików obrazów platformy Docker może zakończyć się niepowodzeniem.
Utwórz nowy projekt przy użyciu szablonu aplikacji internetowej platformy ASP.NET Core lub jeśli chcesz użyć programu .NET Framework zamiast platformy .NET Core, wybierz pozycję ASP.NET Aplikacja internetowa (.NET Framework).
Na ekranie Tworzenie nowej aplikacji internetowej upewnij się, że zaznaczono pole wyboru Włącz obsługę platformy Docker.
Zrzut ekranu przedstawia najnowszą wersję z platformą .NET 8.0. Jeśli używasz programu .NET Framework, okno dialogowe wygląda nieco inaczej.
Wybierz odpowiedni typ kontenera (Windows lub Linux), a następnie wybierz pozycję Utwórz.
Plik Dockerfile — przegląd
Program Visual Studio tworzy plik Dockerfile w projekcie, który zawiera przepis na sposób tworzenia końcowego obrazu platformy Docker. Aby uzyskać więcej informacji, zobacz dokumentację pliku Dockerfile, aby uzyskać szczegółowe informacje o poleceniach używanych w pliku 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.
#Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed.
#For more information, please see https://aka.ms/containercompat
FROM mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 AS base
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
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
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyWebApp.dll"]
Powyższy plik Dockerfile jest oparty na obrazie microsoft Container Registry (MCR) .NET 8 i zawiera instrukcje modyfikowania obrazu podstawowego przez utworzenie projektu o nazwie MyWebApp
i dodanie go do kontenera. Jeśli używasz programu .NET Framework, obraz podstawowy jest inny.
Po zaznaczeniu pola wyboru Konfiguruj pod kątem protokołu HTTPS w oknie dialogowym nowego projektu plik Dockerfile uwidacznia dwa porty. Jeden port jest używany na potrzeby ruchu HTTP, a drugi na potrzeby protokołu HTTPS. Jeśli pole wyboru nie jest zaznaczone, dla ruchu HTTP jest uwidoczniony pojedynczy port (80).
Program Visual Studio 2022 w wersji 17.7 lub nowszej może być przeznaczony dla platformy .NET 8. W takim przypadku możesz bezpieczniej uruchomić aplikację, a nie z podwyższonym poziomem uprawnień. Domyślny plik Dockerfile generowany przez program Visual Studio dla projektów platformy .NET 8 jest skonfigurowany do uruchamiania jako zwykły użytkownik. Aby włączyć to zachowanie w istniejącym projekcie, dodaj wiersz USER app
do pliku Dockerfile w obrazie podstawowym. Ponadto, ponieważ port 80 jest ograniczony dla zwykłych użytkowników, uwidacznia porty 8080 i 8081 zamiast 80 i 443. Port 8080 jest używany dla ruchu HTTP, a port 8081 jest używany dla protokołu HTTPS. Aby uruchomić go jako zwykły użytkownik, kontener musi używać obrazu podstawowego platformy .NET 8, a aplikacja musi działać jako aplikacja platformy .NET 8. Po poprawnym skonfigurowaniu plik Dockerfile powinien zawierać kod, jak w poniższym przykładzie:
FROM mcr.microsoft.com/dotnet/aspnet:8.0-preview AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
Debugowanie
Wybierz pozycję Docker z listy rozwijanej debugowania na pasku narzędzi i rozpocznij debugowanie aplikacji. Może zostać wyświetlony komunikat z monitem o zaufanie certyfikatowi; wybierz opcję zaufania certyfikatowi, aby kontynuować.
Opcja Narzędzia kontenera w oknie Dane wyjściowe pokazuje, jakie akcje mają miejsce. Po raz pierwszy pobranie obrazu podstawowego może zająć trochę czasu, ale jest szybsze w kolejnych uruchomieniach.
Po zakończeniu kompilacji zostanie otwarta przeglądarka i zostanie wyświetlona strona główna aplikacji. Na pasku adresu przeglądarki można zobaczyć localhost
adres URL i numer portu na potrzeby debugowania.
Uwaga
Jeśli musisz zmienić porty na potrzeby debugowania, możesz to zrobić w launchSettings.json
pliku. Zobacz Ustawienia uruchamiania kontenera.
Okno Kontenery
Możesz użyć okna Kontenery , aby wyświetlić uruchomione kontenery na maszynie i inne dostępne obrazy.
Otwórz okno Kontenery przy użyciu pola wyszukiwania w środowisku IDE (naciśnij Ctrl+Q, aby go użyć), wpisz , container
a następnie wybierz okno Kontenery z listy.
Okno Kontenery można zainstalować w wygodnym miejscu, takim jak poniżej edytora, przenosząc je i postępując zgodnie z przewodnikami umieszczania okien.
W oknie znajdź kontener i przejdź przez każdą kartę, aby wyświetlić zmienne środowiskowe, mapowania portów, dzienniki i system plików.
Aby uzyskać więcej informacji, zobacz Używanie okna Kontenery.
Publikowanie obrazów platformy Docker
Po zakończeniu cyklu tworzenia i debugowania aplikacji możesz utworzyć obraz produkcyjny aplikacji.
Zmień listę rozwijaną konfiguracji na Wydanie i skompiluj aplikację.
Kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań i wybierz polecenie Publikuj.
W oknie dialogowym Publikowanie wybierz kartę Docker Container Registry.
Wybierz pozycję Utwórz nowy rejestr kontenerów platformy Azure.
Wypełnij żądane wartości w obszarze Tworzenie nowego rejestru kontenerów platformy Azure.
Ustawienie Sugerowana wartość opis Prefiks DNS Nazwa unikatowa w skali globalnej Nazwa, która jednoznacznie identyfikuje rejestr kontenerów. Subskrypcja Wybierz swoją subskrypcję Subskrypcja platformy Azure, która ma być używana. Grupa zasobów myResourceGroup Nazwa grupy zasobów, w której ma zostać utworzony rejestr kontenerów. Wybierz pozycję Nowa, aby utworzyć nową grupę zasobów. SKU Standardowa Warstwa usługi rejestru kontenerów Lokalizacja rejestru Blisko Ciebie znajduje się lokalizacja Wybierz lokalizację w regionie blisko Ciebie lub w pobliżu innych usług, które mogą korzystać z rejestru kontenerów. Wybierz pozycję Utwórz. W oknie dialogowym Publikowanie zostanie wyświetlony utworzony rejestr.
Wybierz pozycję Zakończ , aby ukończyć proces publikowania obrazu kontenera w nowo utworzonym rejestrze na platformie Azure.
Następne kroki
Teraz możesz ściągnąć kontener z rejestru do dowolnego hosta, który może uruchamiać obrazy platformy Docker, na przykład azure Container Instances.