Udostępnij za pośrednictwem


Uruchamianie aplikacji ASP.NET Core w kontenerach platformy Docker

Uwaga

Nie jest to najnowsza wersja tego artykułu. Aby zapoznać się z bieżącą wersją, zobacz wersję tego artykułu platformy .NET 9.

Ostrzeżenie

Ta wersja ASP.NET Core nie jest już obsługiwana. Aby uzyskać więcej informacji, zobacz zasady pomocy technicznej platformy .NET i platformy .NET Core. Aby zapoznać się z bieżącą wersją, zobacz wersję tego artykułu platformy .NET 9.

Ważne

Te informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany, zanim zostanie wydany komercyjnie. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.

Aby zapoznać się z bieżącą wersją, zobacz wersję tego artykułu platformy .NET 9.

W tym artykule pokazano, jak uruchomić aplikację ASP.NET Core w kontenerach platformy Docker.

Wersja systemu Windows Home nie obsługuje funkcji Hyper-V, a funkcja Hyper-V jest wymagana dla platformy Docker.

Zobacz Containerize a .NET app with dotnet publish (Konteneryzowanie aplikacji .NET za pomocą polecenia dotnet publish ), aby uzyskać informacje na temat konteneryzowanej aplikacji platformy .NET za pomocą polecenia dotnet publish.

ASP.NET Core Obrazy platformy Docker

Na potrzeby tego samouczka pobierzesz przykładową aplikację ASP.NET Core i uruchomisz ją w kontenerach platformy Docker. Przykład działa zarówno z kontenerami systemu Linux, jak i Windows.

Przykładowy plik Dockerfile używa funkcji kompilacji wieloetapowej platformy Docker do kompilowania i uruchamiania w różnych kontenerach. Kontenery kompilacji i uruchamiania są tworzone na podstawie obrazów udostępnianych w usłudze Docker Hub przez firmę Microsoft:

  • dotnet/sdk

    W przykładzie użyto tego obrazu do kompilowania aplikacji. Obraz zawiera zestaw .NET SDK, który zawiera narzędzia wiersza polecenia (CLI). Obraz jest zoptymalizowany pod kątem lokalnego programowania, debugowania i testowania jednostkowego. Narzędzia zainstalowane na potrzeby programowania i kompilacji sprawiają, że obraz jest stosunkowo duży.

  • dotnet/aspnet

    W przykładzie użyto tego obrazu do uruchamiania aplikacji. Obraz zawiera ASP.NET Core runtime i biblioteki i jest zoptymalizowany pod kątem uruchamiania aplikacji w środowisku produkcyjnym. Przeznaczony do szybkiego wdrażania i uruchamiania aplikacji obraz jest stosunkowo mały, więc wydajność sieci z rejestru platformy Docker do hosta platformy Docker jest zoptymalizowana. Do kontenera są kopiowane tylko pliki binarne i zawartość wymagana do uruchomienia aplikacji. Zawartość jest gotowa do uruchomienia, umożliwiając najszybszy czas od docker run uruchomienia aplikacji. Kompilacja kodu dynamicznego nie jest wymagana w modelu platformy Docker.

Wymagania wstępne

Pobieranie przykładowej aplikacji

  • Pobierz przykład, klonując repozytorium .NET Docker:

    git clone https://github.com/dotnet/dotnet-docker
    

Lokalne uruchamianie aplikacji

  • Przejdź do folderu projektu pod adresem dotnet-docker/samples/aspnetapp/aspnetapp.

  • Uruchom następujące polecenie, aby skompilować i uruchomić aplikację lokalnie:

    dotnet run
    
  • Przejdź do http://localhost:<port> witryny w przeglądarce, aby przetestować aplikację.

  • Naciśnij Ctrl+C w wierszu polecenia, aby zatrzymać aplikację.

Uruchamianie w kontenerze systemu Linux lub kontenerze systemu Windows

  • Aby uruchomić polecenie w kontenerze systemu Linux, kliknij prawym przyciskiem myszy ikonę klienta platformy Docker na pasku zadań i wybierz pozycję Przełącz do kontenerów systemu Linux.

  • Aby uruchomić polecenie w kontenerze systemu Windows, kliknij prawym przyciskiem myszy ikonę klienta platformy Docker na pasku zadań i wybierz przełącznik do kontenerów systemu Windows.

  • Przejdź do folderu Dockerfile pod adresem dotnet-docker/samples/aspnetapp.

  • Uruchom następujące polecenia, aby skompilować i uruchomić przykład na platformie Docker:

    docker build -t aspnetapp .
    docker run -it --rm -p <port>:8080 --name aspnetcore_sample aspnetapp
    

    Argumenty build polecenia:

    • Nadaj obrazowi nazwę aspnetapp.
    • Wyszukaj plik Dockerfile w bieżącym folderze (kropka na końcu).

    Argumenty polecenia run:

    • Przydziel pseudo-TTY i pozostaw go otwarty, nawet jeśli nie jest dołączony. (Taki sam efekt jak --interactive --tty.)
    • Automatycznie usuń kontener po jego zakończeniu.
    • Zamapuj <port> komputer lokalny na port 8080 w kontenerze.
    • Nadaj kontenerowi nazwę aspnetcore_sample.
    • Określ obraz aplikacji aspnetapp.
  • Przejdź do http://localhost:<port> witryny w przeglądarce, aby przetestować aplikację.

Ręczne kompilowanie i wdrażanie

W niektórych scenariuszach możesz chcieć wdrożyć aplikację w kontenerze, kopiując jej zasoby, które są potrzebne w czasie wykonywania. W tej sekcji przedstawiono sposób ręcznego wdrażania.

  • Przejdź do folderu projektu pod adresem dotnet-docker/samples/aspnetapp/aspnetapp.

  • Uruchom polecenie dotnet publish:

    dotnet publish -c Release -o published
    

    Argumenty polecenia:

    • Skompiluj aplikację w trybie wydania (wartość domyślna to tryb debugowania).
    • Utwórz zasoby w opublikowanym folderze.
  • Uruchom aplikację.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Przejdź do strony, aby http://localhost:<port> wyświetlić home stronę.

Aby użyć ręcznie opublikowanej aplikacji w kontenerze platformy Docker, utwórz nowy plik Dockerfile i użyj docker build . polecenia , aby skompilować obraz.

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Aby wyświetlić nowy obraz, użyj docker images polecenia .

Plik Dockerfile

Oto plik Dockerfile używany przez docker build uruchomione wcześniej polecenie. dotnet publish Używa ona tego samego sposobu, w jaki wykonaliśmy w tej sekcji, aby skompilować i wdrożyć.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

W poprzednim pliku Dockerfile*.csproj pliki są kopiowane i przywracane jako odrębne warstwy. Gdy docker build polecenie skompiluje obraz, używa wbudowanej pamięci podręcznej. *.csproj Jeśli pliki nie zostały zmienione od czasu ostatniego docker build uruchomienia polecenia, dotnet restore polecenie nie musi być uruchamiane ponownie. Zamiast tego wbudowana pamięć podręczna dla odpowiedniej dotnet restore warstwy jest ponownie wykorzystywana. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące pisania plików Dockerfile.

Dodatkowe zasoby

Następne kroki

Repozytorium Git zawierające przykładową aplikację zawiera również dokumentację. Aby zapoznać się z omówieniem zasobów dostępnych w repozytorium, zobacz plik README. W szczególności dowiedz się, jak zaimplementować protokół HTTPS:

ASP.NET Core Obrazy platformy Docker

Na potrzeby tego samouczka pobierzesz przykładową aplikację ASP.NET Core i uruchomisz ją w kontenerach platformy Docker. Przykład działa zarówno z kontenerami systemu Linux, jak i Windows.

Przykładowy plik Dockerfile używa funkcji kompilacji wieloetapowej platformy Docker do kompilowania i uruchamiania w różnych kontenerach. Kontenery kompilacji i uruchamiania są tworzone na podstawie obrazów udostępnianych w usłudze Docker Hub przez firmę Microsoft:

  • dotnet/sdk

    W przykładzie użyto tego obrazu do kompilowania aplikacji. Obraz zawiera zestaw .NET SDK, który zawiera narzędzia wiersza polecenia (CLI). Obraz jest zoptymalizowany pod kątem lokalnego programowania, debugowania i testowania jednostkowego. Narzędzia zainstalowane na potrzeby programowania i kompilacji sprawiają, że obraz jest stosunkowo duży.

  • dotnet/aspnet

    W przykładzie użyto tego obrazu do uruchamiania aplikacji. Obraz zawiera ASP.NET Core runtime i biblioteki i jest zoptymalizowany pod kątem uruchamiania aplikacji w środowisku produkcyjnym. Przeznaczony do szybkiego wdrażania i uruchamiania aplikacji obraz jest stosunkowo mały, więc wydajność sieci z rejestru platformy Docker do hosta platformy Docker jest zoptymalizowana. Do kontenera są kopiowane tylko pliki binarne i zawartość wymagana do uruchomienia aplikacji. Zawartość jest gotowa do uruchomienia, umożliwiając najszybszy czas od docker run uruchomienia aplikacji. Kompilacja kodu dynamicznego nie jest wymagana w modelu platformy Docker.

Wymagania wstępne

Pobieranie przykładowej aplikacji

  • Pobierz przykład, klonując repozytorium .NET Docker:

    git clone https://github.com/dotnet/dotnet-docker
    

Lokalne uruchamianie aplikacji

  • Przejdź do folderu projektu pod adresem dotnet-docker/samples/aspnetapp/aspnetapp.

  • Uruchom następujące polecenie, aby skompilować i uruchomić aplikację lokalnie:

    dotnet run
    
  • Przejdź do http://localhost:5000 witryny w przeglądarce, aby przetestować aplikację.

  • Naciśnij Ctrl+C w wierszu polecenia, aby zatrzymać aplikację.

Uruchamianie w kontenerze systemu Linux lub kontenerze systemu Windows

  • Aby uruchomić polecenie w kontenerze systemu Linux, kliknij prawym przyciskiem myszy ikonę klienta platformy Docker na pasku zadań i wybierz pozycję Przełącz do kontenerów systemu Linux.

  • Aby uruchomić polecenie w kontenerze systemu Windows, kliknij prawym przyciskiem myszy ikonę klienta platformy Docker na pasku zadań i wybierz przełącznik do kontenerów systemu Windows.

  • Przejdź do folderu Dockerfile pod adresem dotnet-docker/samples/aspnetapp.

  • Uruchom następujące polecenia, aby skompilować i uruchomić przykład na platformie Docker:

    docker build -t aspnetapp .
    docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp
    

    Argumenty build polecenia:

    • Nadaj obrazowi nazwę aspnetapp.
    • Wyszukaj plik Dockerfile w bieżącym folderze (kropka na końcu).

    Argumenty polecenia run:

    • Przydziel pseudo-TTY i pozostaw go otwarty, nawet jeśli nie jest dołączony. (Taki sam efekt jak --interactive --tty.)
    • Automatycznie usuń kontener po jego zakończeniu.
    • Mapuj port 5000 na maszynie lokalnej na port 80 w kontenerze.
    • Nadaj kontenerowi nazwę aspnetcore_sample.
    • Określ obraz aplikacji aspnetapp.
  • Przejdź do http://localhost:5000 witryny w przeglądarce, aby przetestować aplikację.

Ręczne kompilowanie i wdrażanie

W niektórych scenariuszach możesz chcieć wdrożyć aplikację w kontenerze, kopiując jej zasoby, które są potrzebne w czasie wykonywania. W tej sekcji przedstawiono sposób ręcznego wdrażania.

  • Przejdź do folderu projektu pod adresem dotnet-docker/samples/aspnetapp/aspnetapp.

  • Uruchom polecenie dotnet publish:

    dotnet publish -c Release -o published
    

    Argumenty polecenia:

    • Skompiluj aplikację w trybie wydania (wartość domyślna to tryb debugowania).
    • Utwórz zasoby w opublikowanym folderze.
  • Uruchom aplikację.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Przejdź do strony, aby http://localhost:5000 wyświetlić home stronę.

Aby użyć ręcznie opublikowanej aplikacji w kontenerze platformy Docker, utwórz nowy plik Dockerfile i użyj docker build . polecenia , aby skompilować obraz.

FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Aby wyświetlić nowy obraz, użyj docker images polecenia .

Plik Dockerfile

Oto plik Dockerfile używany przez docker build uruchomione wcześniej polecenie. dotnet publish Używa ona tego samego sposobu, w jaki wykonaliśmy w tej sekcji, aby skompilować i wdrożyć.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:7.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

W poprzednim pliku Dockerfile*.csproj pliki są kopiowane i przywracane jako odrębne warstwy. Gdy docker build polecenie skompiluje obraz, używa wbudowanej pamięci podręcznej. *.csproj Jeśli pliki nie zostały zmienione od czasu ostatniego docker build uruchomienia polecenia, dotnet restore polecenie nie musi być uruchamiane ponownie. Zamiast tego wbudowana pamięć podręczna dla odpowiedniej dotnet restore warstwy jest ponownie wykorzystywana. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące pisania plików Dockerfile.

Dodatkowe zasoby

Następne kroki

Repozytorium Git zawierające przykładową aplikację zawiera również dokumentację. Aby zapoznać się z omówieniem zasobów dostępnych w repozytorium, zobacz plik README. W szczególności dowiedz się, jak zaimplementować protokół HTTPS:

ASP.NET Core Obrazy platformy Docker

Na potrzeby tego samouczka pobierzesz przykładową aplikację ASP.NET Core i uruchomisz ją w kontenerach platformy Docker. Przykład działa zarówno z kontenerami systemu Linux, jak i Windows.

Przykładowy plik Dockerfile używa funkcji kompilacji wieloetapowej platformy Docker do kompilowania i uruchamiania w różnych kontenerach. Kontenery kompilacji i uruchamiania są tworzone na podstawie obrazów udostępnianych w usłudze Docker Hub przez firmę Microsoft:

  • dotnet/sdk

    W przykładzie użyto tego obrazu do kompilowania aplikacji. Obraz zawiera zestaw .NET SDK, który zawiera narzędzia wiersza polecenia (CLI). Obraz jest zoptymalizowany pod kątem lokalnego programowania, debugowania i testowania jednostkowego. Narzędzia zainstalowane na potrzeby programowania i kompilacji sprawiają, że obraz jest stosunkowo duży.

  • dotnet/core/sdk

    W przykładzie użyto tego obrazu do kompilowania aplikacji. Obraz zawiera zestaw .NET Core SDK, który zawiera narzędzia wiersza polecenia (CLI). Obraz jest zoptymalizowany pod kątem lokalnego programowania, debugowania i testowania jednostkowego. Narzędzia zainstalowane na potrzeby programowania i kompilacji sprawiają, że obraz jest stosunkowo duży.

  • dotnet/aspnet

    W przykładzie użyto tego obrazu do uruchamiania aplikacji. Obraz zawiera ASP.NET Core runtime i biblioteki i jest zoptymalizowany pod kątem uruchamiania aplikacji w środowisku produkcyjnym. Przeznaczony do szybkiego wdrażania i uruchamiania aplikacji obraz jest stosunkowo mały, więc wydajność sieci z rejestru platformy Docker do hosta platformy Docker jest zoptymalizowana. Do kontenera są kopiowane tylko pliki binarne i zawartość wymagana do uruchomienia aplikacji. Zawartość jest gotowa do uruchomienia, umożliwiając najszybszy czas od docker run uruchomienia aplikacji. Kompilacja kodu dynamicznego nie jest wymagana w modelu platformy Docker.

  • dotnet/core/aspnet

    W przykładzie użyto tego obrazu do uruchamiania aplikacji. Obraz zawiera ASP.NET Core runtime i biblioteki i jest zoptymalizowany pod kątem uruchamiania aplikacji w środowisku produkcyjnym. Przeznaczony do szybkiego wdrażania i uruchamiania aplikacji obraz jest stosunkowo mały, więc wydajność sieci z rejestru platformy Docker do hosta platformy Docker jest zoptymalizowana. Do kontenera są kopiowane tylko pliki binarne i zawartość wymagana do uruchomienia aplikacji. Zawartość jest gotowa do uruchomienia, umożliwiając najszybszy czas od docker run uruchomienia aplikacji. Kompilacja kodu dynamicznego nie jest wymagana w modelu platformy Docker.

Wymagania wstępne

Pobieranie przykładowej aplikacji

  • Pobierz przykład, klonując repozytorium .NET Docker:

    git clone https://github.com/dotnet/dotnet-docker
    

Lokalne uruchamianie aplikacji

  • Przejdź do folderu projektu pod adresem dotnet-docker/samples/aspnetapp/aspnetapp.

  • Uruchom następujące polecenie, aby skompilować i uruchomić aplikację lokalnie:

    dotnet run
    
  • Przejdź do http://localhost:5000 witryny w przeglądarce, aby przetestować aplikację.

  • Naciśnij Ctrl+C w wierszu polecenia, aby zatrzymać aplikację.

Uruchamianie w kontenerze systemu Linux lub kontenerze systemu Windows

  • Aby uruchomić polecenie w kontenerze systemu Linux, kliknij prawym przyciskiem myszy ikonę klienta platformy Docker na pasku zadań i wybierz pozycję Przełącz do kontenerów systemu Linux.

  • Aby uruchomić polecenie w kontenerze systemu Windows, kliknij prawym przyciskiem myszy ikonę klienta platformy Docker na pasku zadań i wybierz przełącznik do kontenerów systemu Windows.

  • Przejdź do folderu Dockerfile pod adresem dotnet-docker/samples/aspnetapp.

  • Uruchom następujące polecenia, aby skompilować i uruchomić przykład na platformie Docker:

    docker build -t aspnetapp .
    docker run -it --rm -p 5000:80 --name aspnetcore_sample aspnetapp
    

    Argumenty build polecenia:

    • Nadaj obrazowi nazwę aspnetapp.
    • Wyszukaj plik Dockerfile w bieżącym folderze (kropka na końcu).

    Argumenty polecenia run:

    • Przydziel pseudo-TTY i pozostaw go otwarty, nawet jeśli nie jest dołączony. (Taki sam efekt jak --interactive --tty.)
    • Automatycznie usuń kontener po jego zakończeniu.
    • Mapuj port 5000 na maszynie lokalnej na port 80 w kontenerze.
    • Nadaj kontenerowi nazwę aspnetcore_sample.
    • Określ obraz aplikacji aspnetapp.
  • Przejdź do http://localhost:5000 witryny w przeglądarce, aby przetestować aplikację.

Ręczne kompilowanie i wdrażanie

W niektórych scenariuszach możesz chcieć wdrożyć aplikację w kontenerze, kopiując jej zasoby, które są potrzebne w czasie wykonywania. W tej sekcji przedstawiono sposób ręcznego wdrażania.

  • Przejdź do folderu projektu pod adresem dotnet-docker/samples/aspnetapp/aspnetapp.

  • Uruchom polecenie dotnet publish:

    dotnet publish -c Release -o published
    

    Argumenty polecenia:

    • Skompiluj aplikację w trybie wydania (wartość domyślna to tryb debugowania).
    • Utwórz zasoby w opublikowanym folderze.
  • Uruchom aplikację.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Przejdź do strony, aby http://localhost:5000 wyświetlić home stronę.

Aby użyć ręcznie opublikowanej aplikacji w kontenerze platformy Docker, utwórz nowy plik Dockerfile i użyj docker build . polecenia , aby skompilować obraz.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Aby wyświetlić nowy obraz, użyj docker images polecenia .

Plik Dockerfile

Oto plik Dockerfile używany przez docker build uruchomione wcześniej polecenie. dotnet publish Używa ona tego samego sposobu, w jaki wykonaliśmy w tej sekcji, aby skompilować i wdrożyć.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Aby wyświetlić nowy obraz, użyj docker images polecenia .

Plik Dockerfile

Oto plik Dockerfile używany przez docker build uruchomione wcześniej polecenie. dotnet publish Używa ona tego samego sposobu, w jaki wykonaliśmy w tej sekcji, aby skompilować i wdrożyć.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /source

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /source/aspnetapp
RUN dotnet publish -c release -o /app --no-restore

# final stage/image
FROM mcr.microsoft.com/dotnet/aspnet:5.0
WORKDIR /app
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

W poprzednim pliku Dockerfile*.csproj pliki są kopiowane i przywracane jako odrębne warstwy. Gdy docker build polecenie skompiluje obraz, używa wbudowanej pamięci podręcznej. *.csproj Jeśli pliki nie zostały zmienione od czasu ostatniego docker build uruchomienia polecenia, dotnet restore polecenie nie musi być uruchamiane ponownie. Zamiast tego wbudowana pamięć podręczna dla odpowiedniej dotnet restore warstwy jest ponownie wykorzystywana. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące pisania plików Dockerfile.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Plik Dockerfile

Oto plik Dockerfile używany przez docker build uruchomione wcześniej polecenie. dotnet publish Używa ona tego samego sposobu, w jaki wykonaliśmy w tej sekcji, aby skompilować i wdrożyć.

FROM mcr.microsoft.com/dotnet/core/sdk:3.0 AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /app/aspnetapp
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0 AS runtime
WORKDIR /app
COPY --from=build /app/aspnetapp/out ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Jak wspomniano w poprzednim pliku Dockerfile, *.csproj pliki są kopiowane i przywracane jako odrębne warstwy. Gdy docker build polecenie skompiluje obraz, używa wbudowanej pamięci podręcznej. *.csproj Jeśli pliki nie zostały zmienione od czasu ostatniego docker build uruchomienia polecenia, dotnet restore polecenie nie musi być uruchamiane ponownie. Zamiast tego wbudowana pamięć podręczna dla odpowiedniej dotnet restore warstwy jest ponownie wykorzystywana. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące pisania plików Dockerfile.

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY published/ ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

Plik Dockerfile

Oto plik Dockerfile używany przez docker build uruchomione wcześniej polecenie. dotnet publish Używa ona tego samego sposobu, w jaki wykonaliśmy w tej sekcji, aby skompilować i wdrożyć.

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY aspnetapp/*.csproj ./aspnetapp/
RUN dotnet restore

# copy everything else and build app
COPY aspnetapp/. ./aspnetapp/
WORKDIR /app/aspnetapp
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS runtime
WORKDIR /app
COPY --from=build /app/aspnetapp/out ./
ENTRYPOINT ["dotnet", "aspnetapp.dll"]

W poprzednim pliku Dockerfile*.csproj pliki są kopiowane i przywracane jako odrębne warstwy. Gdy docker build polecenie skompiluje obraz, używa wbudowanej pamięci podręcznej. *.csproj Jeśli pliki nie zostały zmienione od czasu ostatniego docker build uruchomienia polecenia, dotnet restore polecenie nie musi być uruchamiane ponownie. Zamiast tego wbudowana pamięć podręczna dla odpowiedniej dotnet restore warstwy jest ponownie wykorzystywana. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące pisania plików Dockerfile.

Dodatkowe zasoby

Następne kroki

Repozytorium Git zawierające przykładową aplikację zawiera również dokumentację. Aby zapoznać się z omówieniem zasobów dostępnych w repozytorium, zobacz plik README. W szczególności dowiedz się, jak zaimplementować protokół HTTPS: