Udostępnij za pomocą


Uruchamianie aplikacji ASP.NET Core w kontenerach platformy Docker

Uwaga

Nie jest to najnowsza wersja tego artykułu. Aby zapoznać się z aktualną wersją, zobacz artykuł w wersji .NET 10.

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 aktualną wersją, zobacz artykuł w wersji .NET 10.

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 Konteneryzacja aplikacji .NET za pomocą polecenia dotnet publish, aby uzyskać informacje na temat konteneryzacji aplikacji platformy .NET za pomocą dotnet publish.

ASP.NET Core obrazy Dockera

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 środowisko uruchomieniowe i biblioteki ASP.NET Core, a także jest zoptymalizowany pod kątem uruchamiania aplikacji w systemie 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, co umożliwia najszybsze przejście od docker run do uruchomienia aplikacji. Kompilacja kodu dynamicznego nie jest wymagana w modelu platformy Docker.

Wymagania wstępne

Pobieranie przykładowej aplikacji

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
    
  • W przeglądarce przejdź do http://localhost:<port>, aby przetestować aplikację.

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

Uruchamianie w kontenerze systemu Linux lub kontenerze systemu Windows

  • Aby uruchomić w kontenerze systemu Linux, kliknij prawym przyciskiem myszy ikonę klienta Docker w zasobniku systemowym i wybierz przełącz na kontenery systemu Linux.

  • Aby uruchomić w kontenerze Windows, kliknij prawym przyciskiem myszy ikonę klienta Docker na pasku zadań i wybierz opcję przełącz na kontenery 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 opuszczeniu.
    • Przypisz <port> na komputerze lokalnym do portu 8080 w kontenerze.
    • Nadaj kontenerowi nazwę aspnetcore_sample.
    • Określ obraz aplikacji aspnetapp.
  • W przeglądarce przejdź do http://localhost:<port>, 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 folderze published.
  • Uruchom aplikację.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Przejdź do http://localhost:<port>, aby zobaczyć stronę główną.

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:10.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, który został użyty przez wcześniej uruchomione polecenie docker build. Używa tego samego sposobu, w jaki ty to robiłeś w tej sekcji, aby skompilować i wdrożyć.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:10.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:10.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 zmieniły się 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 Dockera

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 środowisko uruchomieniowe i biblioteki ASP.NET Core, a także jest zoptymalizowany pod kątem uruchamiania aplikacji w systemie 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, co umożliwia najszybsze przejście od docker run do uruchomienia aplikacji. Kompilacja kodu dynamicznego nie jest wymagana w modelu platformy Docker.

Wymagania wstępne

Pobieranie przykładowej aplikacji

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
    
  • W przeglądarce przejdź do http://localhost:<port>, aby przetestować aplikację.

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

Uruchamianie w kontenerze systemu Linux lub kontenerze systemu Windows

  • Aby uruchomić w kontenerze systemu Linux, kliknij prawym przyciskiem myszy ikonę klienta Docker w zasobniku systemowym i wybierz przełącz na kontenery systemu Linux.

  • Aby uruchomić w kontenerze Windows, kliknij prawym przyciskiem myszy ikonę klienta Docker na pasku zadań i wybierz opcję przełącz na kontenery 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 opuszczeniu.
    • Przypisz <port> na komputerze lokalnym do portu 8080 w kontenerze.
    • Nadaj kontenerowi nazwę aspnetcore_sample.
    • Określ obraz aplikacji aspnetapp.
  • W przeglądarce przejdź do http://localhost:<port>, 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 folderze published.
  • Uruchom aplikację.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Przejdź do http://localhost:<port>, aby zobaczyć stronę główną.

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:9.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, który został użyty przez wcześniej uruchomione polecenie docker build. Używa tego samego sposobu, w jaki ty to robiłeś w tej sekcji, aby skompilować i wdrożyć.

# https://hub.docker.com/_/microsoft-dotnet
FROM mcr.microsoft.com/dotnet/sdk:9.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:9.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 Dockera

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 środowisko uruchomieniowe i biblioteki ASP.NET Core, a także jest zoptymalizowany pod kątem uruchamiania aplikacji w systemie 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, co umożliwia najszybsze przejście od docker run do uruchomienia aplikacji. Kompilacja kodu dynamicznego nie jest wymagana w modelu platformy Docker.

Wymagania wstępne

Pobieranie przykładowej aplikacji

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
    
  • W przeglądarce przejdź do http://localhost:<port>, aby przetestować aplikację.

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

Uruchamianie w kontenerze systemu Linux lub kontenerze systemu Windows

  • Aby uruchomić w kontenerze systemu Linux, kliknij prawym przyciskiem myszy ikonę klienta Docker w zasobniku systemowym i wybierz przełącz na kontenery systemu Linux.

  • Aby uruchomić w kontenerze Windows, kliknij prawym przyciskiem myszy ikonę klienta Docker na pasku zadań i wybierz opcję przełącz na kontenery 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 opuszczeniu.
    • Przypisz <port> na komputerze lokalnym do portu 8080 w kontenerze.
    • Nadaj kontenerowi nazwę aspnetcore_sample.
    • Określ obraz aplikacji aspnetapp.
  • W przeglądarce przejdź do http://localhost:<port>, 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 folderze published.
  • Uruchom aplikację.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Przejdź do http://localhost:<port>, aby zobaczyć stronę główną.

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, który został użyty przez wcześniej uruchomione polecenie docker build. Używa tego samego sposobu, w jaki ty to robiłeś 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 Dockera

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 środowisko uruchomieniowe i biblioteki ASP.NET Core, a także jest zoptymalizowany pod kątem uruchamiania aplikacji w systemie 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, co umożliwia najszybsze przejście od docker run do uruchomienia aplikacji. Kompilacja kodu dynamicznego nie jest wymagana w modelu platformy Docker.

Wymagania wstępne

Pobieranie przykładowej aplikacji

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
    
  • W przeglądarce przejdź do http://localhost:5000, aby przetestować aplikację.

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

Uruchamianie w kontenerze systemu Linux lub kontenerze systemu Windows

  • Aby uruchomić w kontenerze systemu Linux, kliknij prawym przyciskiem myszy ikonę klienta Docker w zasobniku systemowym i wybierz przełącz na kontenery systemu Linux.

  • Aby uruchomić w kontenerze Windows, kliknij prawym przyciskiem myszy ikonę klienta Docker na pasku zadań i wybierz opcję przełącz na kontenery 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 opuszczeniu.
    • Zmapuj port 5000 na maszynie lokalnej na port 80 w kontenerze.
    • Nadaj kontenerowi nazwę aspnetcore_sample.
    • Określ obraz aplikacji aspnetapp.
  • W przeglądarce przejdź do http://localhost:5000, 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 folderze published.
  • Uruchom aplikację.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Przejdź do http://localhost:5000, aby zobaczyć stronę główną.

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, który został użyty przez wcześniej uruchomione polecenie docker build. Używa tego samego sposobu, w jaki ty to robiłeś 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 Dockera

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 środowisko uruchomieniowe i biblioteki ASP.NET Core, a także jest zoptymalizowany pod kątem uruchamiania aplikacji w systemie 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, co umożliwia najszybsze przejście od docker run do 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 środowisko uruchomieniowe i biblioteki ASP.NET Core, a także jest zoptymalizowany pod kątem uruchamiania aplikacji w systemie 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, co umożliwia najszybsze przejście od docker run do uruchomienia aplikacji. Kompilacja kodu dynamicznego nie jest wymagana w modelu platformy Docker.

Wymagania wstępne

Pobieranie przykładowej aplikacji

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
    
  • W przeglądarce przejdź do http://localhost:5000, aby przetestować aplikację.

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

Uruchamianie w kontenerze systemu Linux lub kontenerze systemu Windows

  • Aby uruchomić w kontenerze systemu Linux, kliknij prawym przyciskiem myszy ikonę klienta Docker w zasobniku systemowym i wybierz przełącz na kontenery systemu Linux.

  • Aby uruchomić w kontenerze Windows, kliknij prawym przyciskiem myszy ikonę klienta Docker na pasku zadań i wybierz opcję przełącz na kontenery 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 opuszczeniu.
    • Zmapuj port 5000 na maszynie lokalnej na port 80 w kontenerze.
    • Nadaj kontenerowi nazwę aspnetcore_sample.
    • Określ obraz aplikacji aspnetapp.
  • W przeglądarce przejdź do http://localhost:5000, 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 folderze published.
  • Uruchom aplikację.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Przejdź do http://localhost:5000, aby zobaczyć stronę główną.

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, który został użyty przez wcześniej uruchomione polecenie docker build. Używa tego samego sposobu, w jaki ty to robiłeś 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, który został użyty przez wcześniej uruchomione polecenie docker build. Używa tego samego sposobu, w jaki ty to robiłeś 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, który został użyty przez wcześniej uruchomione polecenie docker build. Używa tego samego sposobu, w jaki ty to robiłeś 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, który został użyty przez wcześniej uruchomione polecenie docker build. Używa tego samego sposobu, w jaki ty to robiłeś 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: