So erstellen Sie ein Docker-Image einer .NET-Web-API

Einer der Hauptvorteile von Docker besteht darin, dass Sie Softwareprojekte ausführen können, ohne komplexe Entwicklungsumgebungen einrichten zu müssen.

In dieser Anleitung erfahren Sie, wie Sie ein Docker-Image einer .NET 5-Web-API erstellen. Sie können dann das Image verwenden, um den Back-End-Code von jedem PC aus auszuführen, auf dem Docker installiert ist, und mit der API Ihres Front-End-Webprojekts oder einer mobilen App interagieren.

Erstellen einer .NET 5-Web-API

Sowohl Docker als auch .NET 5 sind Open Source und plattformübergreifend, daher können Sie dieser Anleitung folgen, unabhängig davon, ob Sie macOS, Windows oder Linux verwenden.

Verwenden Sie die dotnet-CLI, um ein ASP.NET-Web-API-Projekt mit dem folgenden Befehl zu erstellen:

 dotnet new webapi -o aspdockerapi

Der obige Befehl erstellt ein Projekt namens aspdockerapi und legt es in einem Ordner mit demselben Namen ab. Darüber hinaus baut die Anwendung einen API-Controller mit einigen Beispielwettervorhersagedaten ein.

Hinweis : Wenn .NET 5 nicht auf Ihrem PC installiert ist, können Sie es über den untenstehenden Link herunterladen.

Download : .NET 5 für Windows, macOS und Linux

Sobald das Projekt erstellt wurde, können Sie mit dem folgenden Befehl in den Stammordner des Projekts wechseln.

 cd aspdockerapi

Sie können die Web-API mit dem folgenden Befehl ausführen und bereitstellen.

 dotnet run

Standardmäßig wird die Anwendung auf Port 5001 bereitgestellt. Sie können die Beispieldaten der Anwendung in Ihrem Browser unter der folgenden URL anzeigen: https://localhost:5001/weatherforecast und die APIs-Daten sollten wie folgt aussehen.

Weitere Informationen: Was ist eine API?

Anleitung zum Erstellen von Docker-Images

Um ein Docker-Image zu erstellen, müssen Sie der Docker-Engine einige Anweisungen zum Erstellen geben. Diese Anweisungen sollten in einer Datei namens Dockerfile abgelegt werden . Beachten Sie, dass die Datei keine Erweiterung hat.

Verwenden Sie den folgenden Befehl, um die Dockerfile im Stammordner Ihres Anwendungsprojekts zu erstellen.

 touch Dockerfile

Nachdem Sie das Dockerfile erstellt haben , sollte Ihre Projektordnerstruktur der folgenden ähneln:

Kopieren Sie nun den folgenden Code und fügen Sie ihn in Ihr Dockerfile ein .

 FROM mcr.microsoft.com/dotnet/aspnet:5.0-focal AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:5.0-focal AS build
WORKDIR /src
COPY ["aspdockerapi.csproj", "./"]
RUN dotnet restore "./aspdockerapi.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "aspdockerapi.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "aspdockerapi.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "aspdockerapi.dll"]

Hinweis: Im Dockerfile oben, das Projekt und DLL – Namen sind aspdockerapi.csproj und aspdockerapi.dll bzw. wenn Ihr Projekt einen anderen Namen hat, stellen Sie sicher , dass Ihre Dockerfile mit den richtigen Namen zu aktualisieren.

Die Dockerfile-Anweisungen verstehen

Das Dockerfile besteht hauptsächlich aus Dockerfile-Schlüsselwörtern, die laut Konvention Großbuchstaben sind. Die Schlüsselwörter geben die Anweisung an, die in jeder Schicht des Docker-Images ausgeführt werden soll. Im Folgenden sind die wichtigsten Docker-Schlüsselwörter aufgeführt, die das obige Dockerfile verwendet.

1. VON

Das Schlüsselwort FROM gibt das Basis-Image an, auf dem unser Image aufgebaut werden soll. Im obigen Dockerfile ist das anfängliche Basis-Image ein .NET 5-Image von Microsoft. Das .NET 5-Basisimage enthält die erforderlichen Komponenten zum Ausführen der Anwendung.

2. ARBEITSVERZEICHNIS

WORKDIR legt das Arbeitsverzeichnis oder den Kontext im Bild fest. In diesem Beispiel wird das Verzeichnis /app mit der folgenden Anweisung WORKDIR /app als Standard- Stammarbeitsverzeichnis zugewiesen .

3. KOPIEREN

Das Schlüsselwort COPY kopiert einfach Inhalte aus einem Ordner und platziert ihn in einem anderen. In diesem Beispiel wird es zunächst verwendet, um die Hauptprojektdatei zu kopieren, d. h. aspdockerapi . csproj in das Images-Arbeitsverzeichnis.

4. AUSFÜHREN

Das Schlüsselwort RUN wird verwendet, um einen bestimmten Linux-Befehl in einem Docker-Image auszuführen. Im obigen Dockerfile wird der RUN- Befehl verwendet, um Abhängigkeiten wiederherzustellen, das ASP.NET-Projekt zu erstellen und das Projekt zu veröffentlichen.

5. CMD

Das Schlüsselwort CMD ist dem oben diskutierten Schlüsselwort RUN ein wenig ähnlich. Es wird auch zum Ausführen eines Linux-Befehls verwendet, aber im Gegensatz zum RUN- Schlüsselwort, das Befehle zum Erstellen des Images ausführt , wird das CMD- Schlüsselwort verwendet, um Linux-Befehle auszuführen, wenn das Image in einer Containerinstanz gestartet wird.

6.EXPOSITION

Das Schlüsselwort EXPOSE wird verwendet, um einen Port innerhalb des Docker-Image für die Außenwelt verfügbar zu machen. In diesem Fall macht das Image Port 80 verfügbar, der zum Offenlegen der API beim Ausführen des Docker-Containers verwendet wird.

Erstellen des Docker-Images

Um das Docker-Image basierend auf dem Dockerfile zu erstellen, führen Sie einfach den folgenden Befehl im Stammordner des Projekts aus, dh dort , wo sich das Dockerfile befindet.

 docker build -t dockerwebapi -f Dockerfile .

Der obige Befehl markiert das Docker-Image mit dem Namen dockerwebapi und gibt außerdem an, dass die Anweisungen zum Erstellen dieses Images in der Dockerfile enthalten sind .

Nachdem das Image fertig erstellt wurde, können Sie mit dem folgenden Befehl überprüfen, ob es als lokales Docker-Image aufgeführt ist:

 docker images

Die Ausgabe des obigen Befehls sollte der folgenden ähneln, und das Bild ( dockerwebapi ) erscheint in diesem Fall in der ersten Zeile.

Wenn Docker nicht auf Ihrem PC installiert ist, gehen Sie wie folgt vor, um Docker unter Ubuntu Linux zu installieren. Andernfalls verwenden Sie den untenstehenden Link, um Docker herunterzuladen und zu installieren.

Download : Docker Download- und Installationsanleitung

Ausführen des Docker-Images

Verwenden Sie den folgenden Befehl, um das neu erstellte Docker-Image auszuführen. Die Option -ti gibt an, dass das Image in einem interaktiven Terminalmodus ausgeführt werden soll, und –rm gibt an, dass der Container sofort nach dem Beenden entfernt werden soll.

 docker run -ti --rm -p 8080:80 dockerwebapi

Außerdem gibt der Befehl an, dass der Docker-Container auf dem HTTP-Port 8080 ausgeführt werden soll, der Port 80 im Contianer zugeordnet ist.

Rufen Sie die URL: http://localhost:8080/WeatherForecast in Ihrem Browser auf und Sie werden feststellen, dass Ihre API-Daten von der ausgeführten Docker-Instanz bereitgestellt werden .

Warum Docker verwenden?

In dieser Anleitung wurde gezeigt, wie Sie ein Docker-Image einer .NET 5-Web-API erstellen.

Mit Docker können Sie die Bereitstellung Ihrer Anwendungen automatisieren, die Einrichtung von Softwareentwicklungsumgebungen vereinfachen und die Zusammenarbeit mit anderen Softwareentwicklern vereinfachen.

Docker bietet auch einige Vorteile gegenüber anderen Virtualisierungstechnologien, weshalb Sie es wahrscheinlich in Ihren Software-Engineering-Projekten verwenden sollten.