Wprowadzenie do platformy Docker w programie Visual Studio dla komputerów Mac

Dzięki Visual Studio dla komputerów Mac można łatwo tworzyć, debugować i uruchamiać konteneryzowane aplikacje ASP.NET Core i publikować je na platformie Azure.

Wymagania wstępne

Instalacja i konfiguracja

W przypadku instalacji platformy Docker przejrzyj i postępuj zgodnie z informacjami w te tematach Install Docker Desktop for Mac (Instalowanie programu Docker Desktop dla komputerów Mac).

Tworzenie aplikacji ASP.NET Core internetowej i dodawanie obsługi platformy Docker

  1. Utwórz nowe rozwiązanie, przechodząc do > Nowe rozwiązanie.
  2. W obszarze Aplikacja > .NET Core wybierz szablon Aplikacja internetowa:  Tworzenie nowej ASP.NET aplikacji internetowej
  3. Wybierz platformę docelową. W tym przykładzie użyjemy programu .NET Core 2.2:  Ustaw platformę docelową
  4. Wprowadź szczegóły projektu, takie jak name (DockerDemo w tym przykładzie). Utworzony projekt zawiera wszystkie podstawowe informacje potrzebne do skompilowania i uruchomienia ASP.NET Core internetowej.
  5. W oknie rozwiązania kliknij prawym przyciskiem myszy projekt DockerDemo i wybierz pozycję Dodaj > Dodaj obsługę platformy Docker:  Dodaj obsługę platformy Docker

Visual Studio dla komputerów Mac automatycznie doda nowy projekt do rozwiązania o nazwie docker-compose i doda plik Dockerfile do istniejącego projektu.

Wygenerowano pliki obsługi platformy Docker

Omówienie pliku Dockerfile

Plik Dockerfile to przepis na utworzenie końcowego obrazu platformy Docker. Opis poleceń znajdujących się w tym pliku można znaleźć w dokumentacji pliku Dockerfile.

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY DockerDemo/DockerDemo.csproj DockerDemo/
RUN dotnet restore "DockerDemo/DockerDemo.csproj"
COPY . .
WORKDIR "/src/DockerDemo"
RUN dotnet build "DockerDemo.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "DockerDemo.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "DockerDemo.dll"]

Poprzedni plik Dockerfile jest oparty na obrazie microsoft/aspnetcore i zawiera instrukcje modyfikowania obrazu podstawowego przez sbudowania projektu i dodania go do kontenera.

Uwaga

Domyślny plik Dockerfile utworzony przez Visual Studio dla komputerów Mac uwidacznia port 80 dla ruchu HTTP. Aby włączyć ruch HTTPS, dodaj Expose 443 do pliku Dockerfile.

Debugowanie

Wybierz projekt docker-compose w opcji Uruchamianie Project i rozpocznij debugowanie (Uruchom > Rozpocznij debugowanie). Spowoduje to skompilowanie, wdrożenie i ASP.NET projektu w kontenerze.

Porada

Podczas pierwszego uruchomienia po zainstalowaniu programu Docker Desktop podczas próby debugowania może zostać wyświetlony następujący błąd: Cannot start service dockerdemo: Mounts denied

Dodaj /usr/local/share/dotnet/sdk/NuGetFallbackFolder do karty Udostępnianie plików w programie Docker Desktop:

Dodawanie folderu NuGetFallbackFolder do udostępniania plików

Po zakończeniu kompilacji aplikacja zostanie uruchomiona w przeglądarce Safari:

Domyślny projekt platformy Docker uruchomiony w przeglądarce Safari

Należy pamiętać, że kontener będzie nasłuchiwać na porcie, a http://localhost:32768 ten port może się różnić.

Aby wyświetlić listę uruchomionych kontenerów, użyj docker ps polecenia w terminalu.

Zanotuj przekaźnik portów na poniższym zrzucie ekranu (w obszarze PORTY). Oznacza to, że kontener nasłuchuje na porcie, który widzieliśmy powyżej w przeglądarce Safari, i przekazuje żądania do wewnętrznego serwera internetowego na porcie 80 (zgodnie z definicją w pliku Dockerfile). Z perspektywy aplikacji nasłuchuje ona na porcie 80:

Lista kontenerów platformy Docker