Docker-Images für ASP.NET Core

In diesem Artikel wird gezeigt, wie eine ASP.NET Core-App in Docker-Containern ausgeführt wird.

Windows Home Edition unterstützt Hyper-V nicht, und Hyper-V ist für Docker erforderlich.

Informationen zum Containerisieren einer .NET-App mit dotnet publish finden Sie unter Containerisieren einer .NET-App mit dotnet publish.

ASP.NET Core Docker-Images

Für dieses Tutorial laden Sie eine ASP.NET Core-Beispiel-App herunter, und führen sie in Docker-Containern aus. Das Beispiel funktioniert sowohl mit Linux- als auch mit Windows-Containern.

Die Dockerfile-Beispieldatei verwendet das Docker-Feature für mehrstufige Builds zur Erstellung und Ausführung in verschiedenen Containern. Die Erstellungs- und Ausführungscontainer werden aus Images erstellt, die im Docker-Hub von Microsoft bereitgestellt werden:

  • dotnet/sdk

    Das Beispiel verwendet dieses Image für die Erstellung der App. Das Image enthält das .NET SDK, das die Befehlszeilentools (CLI) enthält. Das Image ist für die lokale Entwicklung sowie für das Debuggen und für Komponententests optimiert. Aufgrund der installierten Tools für die Entwicklung und Kompilierung ist das Image relativ groß.

  • dotnet/aspnet

    Das Beispiel verwendet dieses Image zum Ausführen der App. Das Image enthält die ASP.NET Core-Runtime und -Bibliotheken und wurde für das Ausführen von Apps in der Produktion optimiert. Das Image wurde im Hinblick auf Bereitstellungs- und App-Startgeschwindigkeit entwickelt und ist daher relativ klein, sodass die Netzwerkleistung von Docker-Registrierung zu Docker-Host optimiert ist. Nur die zum Ausführen einer App benötigten Binärdateien und Inhalte werden in den Container kopiert. Die Inhalte sind bereit zur Ausführung und ermöglichen in kürzester Zeit nach dem docker run das Starten der App. Die dynamische Codekompilierung ist im Docker-Modell nicht erforderlich.

Voraussetzungen

Herunterladen der Beispiel-App

  • Laden Sie das Beispiel herunter, indem Sie das .NET Docker-Repository klonen:

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

Lokales Ausführen der App

  • Navigieren Sie zum Projektordner unter dotnet-docker/samples/aspnetapp/aspnetapp.

  • Führen Sie den folgenden Befehl aus, um die App zu erstellen und lokal auszuführen:

    dotnet run
    
  • Navigieren Sie in einem Browser zu http://localhost:5000, um die App zu testen.

  • Drücken Sie Strg+C an der Eingabeaufforderung, um die App zu stoppen.

Ausführen in einem Linux- oder Windows-Container

  • Wenn Sie in einem Linux-Container ausführen möchten, klicken Sie mit der rechten Maustaste auf das Docker-Clientsymbol in der Systemleiste, und wählen Sie den Wechsel zu Linux-Containern.

  • Wenn Sie in einem Windows-Container ausführen möchten, klicken Sie mit der rechten Maustaste auf das Docker-Clientsymbol in der Systemleiste, und wählen Sie den Wechsel zu Windows-Containern.

  • Navigieren Sie zum Dockerfile-Ordner unter dotnet-docker/samples/aspnetapp.

  • Führen Sie die folgenden Befehle zum Erstellen und Ausführen des Beispiels in Docker aus:

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

    Argumente des build-Befehls:

    • Nennen Sie das Image „aspnetapp“.
    • Suchen Sie nach der Dockerfil-Datei im aktuellen Ordner (Punkt am Ende).

    Argumente des run-Befehls:

    • Ordnen Sie ein pseudo-TTY zu, und halten Sie es offen, wenn auch nicht angefügt. (Dieselben Auswirkungen wie --interactive --tty.)
    • Entfernen Sie den Container, wenn er beendet wird.
    • Ordnen Sie Port 5000 auf dem lokalen Computer Port 8080 im Container zu.
    • Nennen Sie den Container „aspnetcore_sample“.
    • Geben Sie das aspnetapp-Image an.
  • Navigieren Sie in einem Browser zu http://localhost:5000, um die App zu testen.

Manuelles Erstellen und Bereitstellen

In einigen Szenarios müssen Sie möglicherweise eine App in einem Container bereitstellen, indem Sie die erforderlichen Ressourcen zur Laufzeit kopieren. In diesem Abschnitt wird gezeigt, wie Sie die Bereitstellung manuell ausführen.

  • Navigieren Sie zum Projektordner unter dotnet-docker/samples/aspnetapp/aspnetapp.

  • Führen Sie den Befehl dotnet publish aus:

    dotnet publish -c Release -o published
    

    Argumente des Befehls:

    • erstellen die App im Releasemodus (der Debugmodus ist der Standardmodus).
    • erstellen die Ressourcen im Ordner published (Veröffentlicht).
  • Führen Sie die App aus.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Navigieren Sie zu http://localhost:5000, um die Startseite anzuzeigen.

Erstellen Sie eine neue Dockerfile-Datei, und verwenden Sie den Befehl docker build . zum Erstellen eines Images, um die manuell veröffentlichte App in einem Docker-Container zu verwenden.

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

Verwenden Sie den Befehl docker images, um das neue Image anzuzeigen.

Die Dockerfile-Datei

Dies ist die Dockerfile-Datei, die vom zuvor ausgeführten Befehl docker build verwendet wurde. Dabei wird dotnet publish auf die gleiche Weise wie in diesem Abschnitt zum Erstellen und Bereitstellen verwendet.

# 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"]

In der vorherigen Dockerfile werden die *.csproj-Dateien kopiert und in unterschiedlichen Ebenen wiederhergestellt. Wenn der Befehl docker build ein Image erstellt, wird ein integrierter Cache verwendet. Wenn sich die *.csproj-Dateien seit der letzten Ausführung des Befehls docker build nicht geändert haben, muss der dotnet restore-Befehl nicht noch mal ausgeführt werden. Stattdessen wird der integrierte Cache für die entsprechende dotnet restore-Ebene verwendet. Weitere Informationen finden Sie unter Best Practices für Dockerfiles.

Zusätzliche Ressourcen

Nächste Schritte

Im Git-Repository, das die Beispiel-App enthält, finden Sie auch die Dokumentation. Eine Übersicht über die im Repository verfügbaren Ressourcen finden Sie in der Infodatei. Insbesondere erfahren Sie, wie Sie HTTPS implementieren:

ASP.NET Core Docker-Images

Für dieses Tutorial laden Sie eine ASP.NET Core-Beispiel-App herunter, und führen sie in Docker-Containern aus. Das Beispiel funktioniert sowohl mit Linux- als auch mit Windows-Containern.

Die Dockerfile-Beispieldatei verwendet das Docker-Feature für mehrstufige Builds zur Erstellung und Ausführung in verschiedenen Containern. Die Erstellungs- und Ausführungscontainer werden aus Images erstellt, die im Docker-Hub von Microsoft bereitgestellt werden:

  • dotnet/sdk

    Das Beispiel verwendet dieses Image für die Erstellung der App. Das Image enthält das .NET SDK, das die Befehlszeilentools (CLI) enthält. Das Image ist für die lokale Entwicklung sowie für das Debuggen und für Komponententests optimiert. Aufgrund der installierten Tools für die Entwicklung und Kompilierung ist das Image relativ groß.

  • dotnet/aspnet

    Das Beispiel verwendet dieses Image zum Ausführen der App. Das Image enthält die ASP.NET Core-Runtime und -Bibliotheken und wurde für das Ausführen von Apps in der Produktion optimiert. Das Image wurde im Hinblick auf Bereitstellungs- und App-Startgeschwindigkeit entwickelt und ist daher relativ klein, sodass die Netzwerkleistung von Docker-Registrierung zu Docker-Host optimiert ist. Nur die zum Ausführen einer App benötigten Binärdateien und Inhalte werden in den Container kopiert. Die Inhalte sind bereit zur Ausführung und ermöglichen in kürzester Zeit nach dem docker run das Starten der App. Die dynamische Codekompilierung ist im Docker-Modell nicht erforderlich.

Voraussetzungen

Herunterladen der Beispiel-App

  • Laden Sie das Beispiel herunter, indem Sie das .NET Docker-Repository klonen:

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

Lokales Ausführen der App

  • Navigieren Sie zum Projektordner unter dotnet-docker/samples/aspnetapp/aspnetapp.

  • Führen Sie den folgenden Befehl aus, um die App zu erstellen und lokal auszuführen:

    dotnet run
    
  • Navigieren Sie in einem Browser zu http://localhost:5000, um die App zu testen.

  • Drücken Sie Strg+C an der Eingabeaufforderung, um die App zu stoppen.

Ausführen in einem Linux- oder Windows-Container

  • Wenn Sie in einem Linux-Container ausführen möchten, klicken Sie mit der rechten Maustaste auf das Docker-Clientsymbol in der Systemleiste, und wählen Sie den Wechsel zu Linux-Containern.

  • Wenn Sie in einem Windows-Container ausführen möchten, klicken Sie mit der rechten Maustaste auf das Docker-Clientsymbol in der Systemleiste, und wählen Sie den Wechsel zu Windows-Containern.

  • Navigieren Sie zum Dockerfile-Ordner unter dotnet-docker/samples/aspnetapp.

  • Führen Sie die folgenden Befehle zum Erstellen und Ausführen des Beispiels in Docker aus:

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

    Argumente des build-Befehls:

    • Nennen Sie das Image „aspnetapp“.
    • Suchen Sie nach der Dockerfil-Datei im aktuellen Ordner (Punkt am Ende).

    Argumente des run-Befehls:

    • Ordnen Sie ein pseudo-TTY zu, und halten Sie es offen, wenn auch nicht angefügt. (Dieselben Auswirkungen wie --interactive --tty.)
    • Entfernen Sie den Container, wenn er beendet wird.
    • Ordnen Sie Port 5000 auf dem lokalen Computer Port 80 im Container zu.
    • Nennen Sie den Container „aspnetcore_sample“.
    • Geben Sie das aspnetapp-Image an.
  • Navigieren Sie in einem Browser zu http://localhost:5000, um die App zu testen.

Manuelles Erstellen und Bereitstellen

In einigen Szenarios müssen Sie möglicherweise eine App in einem Container bereitstellen, indem Sie die erforderlichen Ressourcen zur Laufzeit kopieren. In diesem Abschnitt wird gezeigt, wie Sie die Bereitstellung manuell ausführen.

  • Navigieren Sie zum Projektordner unter dotnet-docker/samples/aspnetapp/aspnetapp.

  • Führen Sie den Befehl dotnet publish aus:

    dotnet publish -c Release -o published
    

    Argumente des Befehls:

    • erstellen die App im Releasemodus (der Debugmodus ist der Standardmodus).
    • erstellen die Ressourcen im Ordner published (Veröffentlicht).
  • Führen Sie die App aus.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Navigieren Sie zu http://localhost:5000, um die Startseite anzuzeigen.

Erstellen Sie eine neue Dockerfile-Datei, und verwenden Sie den Befehl docker build . zum Erstellen eines Images, um die manuell veröffentlichte App in einem Docker-Container zu verwenden.

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

Verwenden Sie den Befehl docker images, um das neue Image anzuzeigen.

Die Dockerfile-Datei

Dies ist die Dockerfile-Datei, die vom zuvor ausgeführten Befehl docker build verwendet wurde. Dabei wird dotnet publish auf die gleiche Weise wie in diesem Abschnitt zum Erstellen und Bereitstellen verwendet.

# 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"]

In der vorherigen Dockerfile werden die *.csproj-Dateien kopiert und in unterschiedlichen Ebenen wiederhergestellt. Wenn der Befehl docker build ein Image erstellt, wird ein integrierter Cache verwendet. Wenn sich die *.csproj-Dateien seit der letzten Ausführung des Befehls docker build nicht geändert haben, muss der dotnet restore-Befehl nicht noch mal ausgeführt werden. Stattdessen wird der integrierte Cache für die entsprechende dotnet restore-Ebene verwendet. Weitere Informationen finden Sie unter Best Practices für Dockerfiles.

Zusätzliche Ressourcen

Nächste Schritte

Im Git-Repository, das die Beispiel-App enthält, finden Sie auch die Dokumentation. Eine Übersicht über die im Repository verfügbaren Ressourcen finden Sie in der Infodatei. Insbesondere erfahren Sie, wie Sie HTTPS implementieren:

ASP.NET Core Docker-Images

Für dieses Tutorial laden Sie eine ASP.NET Core-Beispiel-App herunter, und führen sie in Docker-Containern aus. Das Beispiel funktioniert sowohl mit Linux- als auch mit Windows-Containern.

Die Dockerfile-Beispieldatei verwendet das Docker-Feature für mehrstufige Builds zur Erstellung und Ausführung in verschiedenen Containern. Die Erstellungs- und Ausführungscontainer werden aus Images erstellt, die im Docker-Hub von Microsoft bereitgestellt werden:

  • dotnet/sdk

    Das Beispiel verwendet dieses Image für die Erstellung der App. Das Image enthält das .NET SDK, das die Befehlszeilentools (CLI) enthält. Das Image ist für die lokale Entwicklung sowie für das Debuggen und für Komponententests optimiert. Aufgrund der installierten Tools für die Entwicklung und Kompilierung ist das Image relativ groß.

  • dotnet/core/sdk

    Das Beispiel verwendet dieses Image für die Erstellung der App. Das Image enthält das .NET Core SDK mit den Befehlszeilentools (CLI). Das Image ist für die lokale Entwicklung sowie für das Debuggen und für Komponententests optimiert. Aufgrund der installierten Tools für die Entwicklung und Kompilierung ist das Image relativ groß.

  • dotnet/aspnet

    Das Beispiel verwendet dieses Image zum Ausführen der App. Das Image enthält die ASP.NET Core-Runtime und -Bibliotheken und wurde für das Ausführen von Apps in der Produktion optimiert. Das Image wurde im Hinblick auf Bereitstellungs- und App-Startgeschwindigkeit entwickelt und ist daher relativ klein, sodass die Netzwerkleistung von Docker-Registrierung zu Docker-Host optimiert ist. Nur die zum Ausführen einer App benötigten Binärdateien und Inhalte werden in den Container kopiert. Die Inhalte sind bereit zur Ausführung und ermöglichen in kürzester Zeit nach dem docker run das Starten der App. Die dynamische Codekompilierung ist im Docker-Modell nicht erforderlich.

  • dotnet/core/aspnet

    Das Beispiel verwendet dieses Image zum Ausführen der App. Das Image enthält die ASP.NET Core-Runtime und -Bibliotheken und wurde für das Ausführen von Apps in der Produktion optimiert. Das Image wurde im Hinblick auf Bereitstellungs- und App-Startgeschwindigkeit entwickelt und ist daher relativ klein, sodass die Netzwerkleistung von Docker-Registrierung zu Docker-Host optimiert ist. Nur die zum Ausführen einer App benötigten Binärdateien und Inhalte werden in den Container kopiert. Die Inhalte sind bereit zur Ausführung und ermöglichen in kürzester Zeit nach dem docker run das Starten der App. Die dynamische Codekompilierung ist im Docker-Modell nicht erforderlich.

Voraussetzungen

Herunterladen der Beispiel-App

  • Laden Sie das Beispiel herunter, indem Sie das .NET Docker-Repository klonen:

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

Lokales Ausführen der App

  • Navigieren Sie zum Projektordner unter dotnet-docker/samples/aspnetapp/aspnetapp.

  • Führen Sie den folgenden Befehl aus, um die App zu erstellen und lokal auszuführen:

    dotnet run
    
  • Navigieren Sie in einem Browser zu http://localhost:5000, um die App zu testen.

  • Drücken Sie Strg+C an der Eingabeaufforderung, um die App zu stoppen.

Ausführen in einem Linux- oder Windows-Container

  • Wenn Sie in einem Linux-Container ausführen möchten, klicken Sie mit der rechten Maustaste auf das Docker-Clientsymbol in der Systemleiste, und wählen Sie den Wechsel zu Linux-Containern.

  • Wenn Sie in einem Windows-Container ausführen möchten, klicken Sie mit der rechten Maustaste auf das Docker-Clientsymbol in der Systemleiste, und wählen Sie den Wechsel zu Windows-Containern.

  • Navigieren Sie zum Dockerfile-Ordner unter dotnet-docker/samples/aspnetapp.

  • Führen Sie die folgenden Befehle zum Erstellen und Ausführen des Beispiels in Docker aus:

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

    Argumente des build-Befehls:

    • Nennen Sie das Image „aspnetapp“.
    • Suchen Sie nach der Dockerfil-Datei im aktuellen Ordner (Punkt am Ende).

    Argumente des run-Befehls:

    • Ordnen Sie ein pseudo-TTY zu, und halten Sie es offen, wenn auch nicht angefügt. (Dieselben Auswirkungen wie --interactive --tty.)
    • Entfernen Sie den Container, wenn er beendet wird.
    • Ordnen Sie Port 5000 auf dem lokalen Computer Port 80 im Container zu.
    • Nennen Sie den Container „aspnetcore_sample“.
    • Geben Sie das aspnetapp-Image an.
  • Navigieren Sie in einem Browser zu http://localhost:5000, um die App zu testen.

Manuelles Erstellen und Bereitstellen

In einigen Szenarios müssen Sie möglicherweise eine App in einem Container bereitstellen, indem Sie die erforderlichen Ressourcen zur Laufzeit kopieren. In diesem Abschnitt wird gezeigt, wie Sie die Bereitstellung manuell ausführen.

  • Navigieren Sie zum Projektordner unter dotnet-docker/samples/aspnetapp/aspnetapp.

  • Führen Sie den Befehl dotnet publish aus:

    dotnet publish -c Release -o published
    

    Argumente des Befehls:

    • erstellen die App im Releasemodus (der Debugmodus ist der Standardmodus).
    • erstellen die Ressourcen im Ordner published (Veröffentlicht).
  • Führen Sie die App aus.

    • Windows:

      dotnet published\aspnetapp.dll
      
    • Linux:

      dotnet published/aspnetapp.dll
      
  • Navigieren Sie zu http://localhost:5000, um die Startseite anzuzeigen.

Erstellen Sie eine neue Dockerfile-Datei, und verwenden Sie den Befehl docker build . zum Erstellen eines Images, um die manuell veröffentlichte App in einem Docker-Container zu verwenden.

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

Verwenden Sie den Befehl docker images, um das neue Image anzuzeigen.

Die Dockerfile-Datei

Dies ist die Dockerfile-Datei, die vom zuvor ausgeführten Befehl docker build verwendet wurde. Dabei wird dotnet publish auf die gleiche Weise wie in diesem Abschnitt zum Erstellen und Bereitstellen verwendet.

# 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"]

Verwenden Sie den Befehl docker images, um das neue Image anzuzeigen.

Die Dockerfile-Datei

Dies ist die Dockerfile-Datei, die vom zuvor ausgeführten Befehl docker build verwendet wurde. Dabei wird dotnet publish auf die gleiche Weise wie in diesem Abschnitt zum Erstellen und Bereitstellen verwendet.

# 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"]

In der vorherigen Dockerfile werden die *.csproj-Dateien kopiert und in unterschiedlichen Ebenen wiederhergestellt. Wenn der Befehl docker build ein Image erstellt, wird ein integrierter Cache verwendet. Wenn sich die *.csproj-Dateien seit der letzten Ausführung des Befehls docker build nicht geändert haben, muss der dotnet restore-Befehl nicht noch mal ausgeführt werden. Stattdessen wird der integrierte Cache für die entsprechende dotnet restore-Ebene verwendet. Weitere Informationen finden Sie unter Best Practices für Dockerfiles.

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

Die Dockerfile-Datei

Dies ist die Dockerfile-Datei, die vom zuvor ausgeführten Befehl docker build verwendet wurde. Dabei wird dotnet publish auf die gleiche Weise wie in diesem Abschnitt zum Erstellen und Bereitstellen verwendet.

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"]

Wie bereits in der vorherigen Dockerfile-Datei erwähnt, werden *.csproj-Dateien kopiert und als unterschiedliche Ebenen wiederhergestellt. Wenn der Befehl docker build ein Image erstellt, wird ein integrierter Cache verwendet. Wenn sich die *.csproj-Dateien seit der letzten Ausführung des Befehls docker build nicht geändert haben, muss der dotnet restore-Befehl nicht noch mal ausgeführt werden. Stattdessen wird der integrierte Cache für die entsprechende dotnet restore-Ebene verwendet. Weitere Informationen finden Sie unter Best Practices für Dockerfiles.

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

Die Dockerfile-Datei

Dies ist die Dockerfile-Datei, die vom zuvor ausgeführten Befehl docker build verwendet wurde. Dabei wird dotnet publish auf die gleiche Weise wie in diesem Abschnitt zum Erstellen und Bereitstellen verwendet.

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"]

In der vorherigen Dockerfile werden die *.csproj-Dateien kopiert und in unterschiedlichen Ebenen wiederhergestellt. Wenn der Befehl docker build ein Image erstellt, wird ein integrierter Cache verwendet. Wenn sich die *.csproj-Dateien seit der letzten Ausführung des Befehls docker build nicht geändert haben, muss der dotnet restore-Befehl nicht noch mal ausgeführt werden. Stattdessen wird der integrierte Cache für die entsprechende dotnet restore-Ebene verwendet. Weitere Informationen finden Sie unter Best Practices für Dockerfiles.

Zusätzliche Ressourcen

Nächste Schritte

Im Git-Repository, das die Beispiel-App enthält, finden Sie auch die Dokumentation. Eine Übersicht über die im Repository verfügbaren Ressourcen finden Sie in der Infodatei. Insbesondere erfahren Sie, wie Sie HTTPS implementieren: