GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So führen Sie eine .NET-App in Docker aus

Docker ist ein Containerisierungsdienst, der zum Ausführen von Anwendungen in isolierten Umgebungen verwendet wird, die mit allen Abhängigkeiten und Codes ausgestattet sind, die sie zum Funktionieren benötigen. Es kann alle Arten von Anwendungen ausführen, einschließlich .NET-basierter Programme, die von Microsoft bereitgestellte Runtime-Images verwenden.

Dockering von .NET

Microsoft stellt vorgefertigte Basisimages zum Ausführen von .NET-Anwendungen bereit. Sie müssen sich nicht um die Installation der .NET-Laufzeit oder des SDK in Ihrem Docker-Container kümmern, da Sie einfach das Basis-Image von Microsoft für die Version von .NET erweitern können, die Ihre Anwendung verwendet.

Sofern Sie nicht vorhaben, Windows-Container auf einem Windows-Server bereitzustellen, müssen Sie entweder .NET Core oder .NET 5 verwenden. Die ältere .NET Framework-Laufzeitumgebung ist nicht plattformübergreifend und kann nicht auf Linux-basierten Containern ausgeführt werden.

Wenn Sie Docker nicht auf Ihrem Entwicklungscomputer installiert haben, müssen Sie Docker Desktop installieren, um Zugriff auf die CLI zu haben. Wenn Sie WSL unter Windows verwenden, sollten Sie die WSL 2-basierte Engine aktivieren, die eine bessere Leistung bietet.

Zum Testen erstellen wir eine neue ASP.NET-API-Anwendung. Das gleiche allgemeine Verfahren gilt für jede Art von Anwendung, da alles, was Docker tut, darin besteht, einen Build auszuführen, wenn Sie den Container erstellen, und Ihre Anwendung mit einem Entrypoint-Befehl zu starten.

Erstellen Sie eine neue Datei namens Dockerfile an der Wurzel Ihres Projekts, wo sich Ihre Lösung befindet. Fügen Sie die folgende Konfiguration ein:

FROM mcr.microsoft.com/dotnet/core/sdk AS build-env
WORKDIR /app

# Copy csproj and restore
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "DockerTest.dll"]

Diese Dockerfile ruft das .NET Core SDK-Image ab, um den Build auszuführen. Es kopiert die .csproj über und stellt wieder her, kopiert dann alles andere und führt einen Build aus. Dann erstellt es ein neues Image aus dem .NET Runtime-Image und kopiert die Build-Artefakte hinüber.

Schließlich ist der Einstiegspunkt hier als dotnet DockerTest.dll definiert . Dadurch wird der ASP.NET-Webserver gestartet, obwohl Sie möglicherweise die Parameter für Ihre Anwendung ändern oder einen völlig anderen Einstiegspunktbefehl angeben müssen.

Sie können Ihren Container mit docker container run testen , indem Sie die ID des Build-Containers übergeben:

docker container run containerid

Für eine ASP.NET-Anwendung müssen Sie Ports öffnen, indem Sie einen Port auf dem Host einem Port auf dem Container zuordnen:

docker run -p 80:80 containerid

Sie können unseren Leitfaden zur Arbeit mit Docker und Dockerfiles lesen, um mehr zu erfahren.


Docker
  1. Wie führe ich ein Programm in einem Docker-Container aus?

  2. So verbinden Sie Docker-Container

  3. So führen Sie MySQL in einem Docker-Container aus

  4. So führen Sie einen Befehl in einem laufenden Docker-Container aus

  5. So installieren Sie Docker und führen Docker-Container in Ubuntu aus

So führen Sie Docker als Nicht-Root-Benutzer in Linux aus

Wie man SSH in einen Docker-Container einfügt und Befehle ausführt

So führen Sie PHPMyAdmin in einem Docker-Container aus

So führen Sie Grafana in einem Docker-Container aus

So führen Sie Jenkins in Docker mit Docker Compose with Volumes aus

So führen Sie Docker-Container aus