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.
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
Klient platformy Docker w wersji 18.03 lub nowszej
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
- Konteneryzowanie aplikacji .NET za pomocą polecenia dotnet publish
- Polecenie kompilacji platformy Docker
- Docker run , polecenie
- ASP.NET Core Docker sample (ten używany w tym samouczku).
- Konfigurowanie platformy ASP.NET Core pod kątem pracy z serwerami proxy i modułami równoważenia obciążenia
- Praca z narzędziami platformy Docker programu Visual Studio
- Debugowanie za pomocą programu Visual Studio Code
- GC przy użyciu platformy Docker i małych kontenerów
- System.IO.IOException: Osiągnięto skonfigurowany limit użytkownika (128) liczby wystąpień inotify
- Aktualizacje obrazów platformy Docker
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
Klient platformy Docker w wersji 18.03 lub nowszej
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
- Konteneryzowanie aplikacji .NET za pomocą polecenia dotnet publish
- Polecenie kompilacji platformy Docker
- Docker run , polecenie
- ASP.NET Core Docker sample (ten używany w tym samouczku).
- Konfigurowanie platformy ASP.NET Core pod kątem pracy z serwerami proxy i modułami równoważenia obciążenia
- Praca z narzędziami platformy Docker programu Visual Studio
- Debugowanie za pomocą programu Visual Studio Code
- GC przy użyciu platformy Docker i małych kontenerów
- System.IO.IOException: Osiągnięto skonfigurowany limit użytkownika (128) liczby wystąpień inotify
- Aktualizacje obrazów platformy Docker
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
Klient platformy Docker w wersji 18.03 lub nowszej
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
- Konteneryzowanie aplikacji .NET za pomocą polecenia dotnet publish
- Polecenie kompilacji platformy Docker
- Docker run , polecenie
- ASP.NET Core Docker sample (ten używany w tym samouczku).
- Konfigurowanie platformy ASP.NET Core pod kątem pracy z serwerami proxy i modułami równoważenia obciążenia
- Praca z narzędziami platformy Docker programu Visual Studio
- Debugowanie za pomocą programu Visual Studio Code
- GC przy użyciu platformy Docker i małych kontenerów
- System.IO.IOException: Osiągnięto skonfigurowany limit użytkownika (128) liczby wystąpień inotify
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: