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

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

  1. 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).

  2. Na ekranie Tworzenie nowej aplikacji internetowej upewnij się, że zaznaczono pole wyboru Włącz obsługę platformy Docker.

    Zrzut ekranu przedstawiający 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.

  3. 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 microsoft/aspnetcore 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 launch Ustawienia.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 klawisze Ctrl+Q, aby go użyć), wpisz , containera 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.

Zrzut ekranu przedstawiający okno Kontenery.

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.

  1. Zmień listę rozwijaną konfiguracji na Wydanie i skompiluj aplikację.

  2. Kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań i wybierz polecenie Publikuj.

  3. W oknie dialogowym Publikowanie wybierz kartę Docker Container Registry.

    Zrzut ekranu przedstawiający okno dialogowe Publikowanie — wybierz pozycję Docker Container Registry.

  4. Wybierz pozycję Utwórz nowy rejestr kontenerów platformy Azure.

    Zrzut ekranu przedstawiający okno dialogowe Publikowanie — wybierz pozycję Utwórz nowy rejestr kontenerów platformy Azure.

  5. 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.

    Zrzut ekranu przedstawiający okno dialogowe tworzenia usługi Azure Container Registry w programie Visual Studio.

  6. Kliknij pozycję Utwórz. W oknie dialogowym Publikowanie zostanie wyświetlony utworzony rejestr.

    Zrzut ekranu przedstawiający okno dialogowe Publikowanie z utworzoną usługą Azure Container Registry.

  7. Wybierz pozycję Zakończ , aby ukończyć proces publikowania obrazu kontenera w nowo utworzonym rejestrze na platformie Azure.

    Zrzut ekranu przedstawiający pomyślne publikowanie.

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

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

  1. 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.

  2. 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).

  3. Na ekranie Tworzenie nowej aplikacji internetowej upewnij się, że zaznaczono pole wyboru Włącz obsługę platformy Docker.

    Zrzut ekranu przedstawiający 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.

  4. 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 klawisze Ctrl+Q, aby go użyć), wpisz , containera 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.

Zrzut ekranu przedstawiający okno Kontenery.

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.

  1. Zmień listę rozwijaną konfiguracji na Wydanie i skompiluj aplikację.

  2. Kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań i wybierz polecenie Publikuj.

  3. W oknie dialogowym Publikowanie wybierz kartę Docker Container Registry.

    Zrzut ekranu przedstawiający okno dialogowe Publikowanie — wybierz pozycję Docker Container Registry.

  4. Wybierz pozycję Utwórz nowy rejestr kontenerów platformy Azure.

    Zrzut ekranu przedstawiający okno dialogowe Publikowanie — wybierz pozycję Utwórz nowy rejestr kontenerów platformy Azure.

  5. 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.

    Zrzut ekranu przedstawiający okno dialogowe tworzenia usługi Azure Container Registry w programie Visual Studio.

  6. Wybierz pozycję Utwórz. W oknie dialogowym Publikowanie zostanie wyświetlony utworzony rejestr.

    Zrzut ekranu przedstawiający okno dialogowe Publikowanie z utworzoną usługą Azure Container Registry.

  7. Wybierz pozycję Zakończ , aby ukończyć proces publikowania obrazu kontenera w nowo utworzonym rejestrze na platformie Azure.

    Zrzut ekranu przedstawiający pomyślne publikowanie.

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.

Dodatkowe zasoby