Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
9m 57s
Container sind ein leistungsfähiges Werkzeug, aber für viele Entwickler kann die Idee, eine C#-Anwendung in einen Container zu packen, überwältigend sein. Das Einrichten einer Dockerdatei und die manuelle Handhabung von Abhängigkeiten kann kompliziert sein. Wie Tim Corey in seinem Video jedoch erklärt, vereinfacht die .NET CLI diesen Prozess und ermöglicht es Entwicklern, ihre Anwendungen zu containerisieren, ohne eine Dockerdatei zu benötigen.
In diesem Artikel werden wir einen tieferen Blick auf die Containerisierung einer C#-Anwendung werfen, indem wir Tims schrittweisen Ansatz aus seinem Video "Containerize Your C# Application Easily with the .NET CLI" verwenden Wenn wir Tims Anleitung folgen, werden wir verstehen, wie man eine .NET-Anwendung mühelos in einem Docker-Container veröffentlicht.
Zu Beginn des Videos erklärt Tim die Notwendigkeit der Containerisierung. Er hebt hervor, dass Container zwar ein großartiges Werkzeug sind, der Prozess der Einrichtung eines Dockerfiles und seiner korrekten Konfiguration jedoch komplex sein kann.
Anstatt ein Dockerfile manuell zu erstellen, stellt Tim einen einfacheren Ansatz vor, bei dem die .NET CLI verwendet wird. Diese Methode ermöglicht es Entwicklern, eine containerisierte Anwendung zu erstellen, ohne manuell eine Dockerdatei zu schreiben.
Tim stellt außerdem klar, dass dieses Video Teil seiner 10-minütigen Schulungsreihe ist, die sich auf schnelle und effektive Einführungen in technische Themen konzentriert.
Tim beginnt mit einer minimalen Web-API-Anwendung als Beispiel. Die Anwendung enthält einen einzelnen Endpunkt genannt /messages, der einige Daten zurückgibt.
Um das Verhalten der Anwendung vor der Containerisierung zu demonstrieren, führt Tim sie lokal aus. Durch den Zugriff auf den /messages Endpunkt bestätigt er, dass es außerhalb eines Containers korrekt funktioniert.
Bevor er mit der Containerisierung fortfährt, überprüft er außerdem, dass:
Dadurch wird sichergestellt, dass wir bei der Erstellung eines neuen Containers die Änderungen klar erkennen können.
Um die Anwendung zu containerisieren, wechselt Tim in die Befehlszeile des Projektverzeichnisses. Anschließend führt er den folgenden Befehl aus:
Tim schlüsselt jeden Teil des Befehls auf:
-o:Linux → Veröffentlicht die Anwendung für einen auf Linux basierenden Container.-a:x64 → Bestimmt die Architektur als 64-Bit.-p:PublishProfile=DefaultContainer → Verwendet die Standardeinstellungen des Containers.-c:Release → Veröffentlicht die App im Release-Modus für bessere Leistung.Tim betont, dass Linux-Container gegenüber Windows-Containern bevorzugt werden, da Windows-Container hauptsächlich als Brücke for .NET Framework-Anwendungen dienen.
Sobald der Veröffentlichungsbefehl ausgeführt wird, erklärt Tim, dass die .NET CLI automatisch die erforderlichen Konfigurationen ermittelt und alles in einen Container packt. Er weist darauf hin, dass:
Nach der Veröffentlichung überprüft er Docker Desktop und bestätigt, dass das neue Container-Image, background-demo, erstellt wurde. Die ursprüngliche Containergröße beträgt 221 MB.
Tim versichert den Betrachtern, dass dieser Umfang später reduziert werden kann.
Um die containerisierte Anwendung zu testen, startet Tim den Container direkt von Docker Desktop aus. Da es noch keine laufenden Container gibt, klickt er auf "Ausführen" und legt eine optionale Einstellung fest:
Nach dem Starten greift er über einen Webbrowser auf die Anwendung zu. Anfangs gibt der Zugriff auf die Stamm-URL einen 404-Fehler, aber durch Navigieren zu /messages werden die erwarteten Daten erfolgreich angezeigt.
Tim hebt einen wichtigen Punkt hervor:
Er weist auch darauf hin, dass die Swagger UI standardmäßig deaktiviert ist, da die Anwendung im Release-Modus veröffentlicht wurde.
Zu diesem Zeitpunkt beträgt die Standardgröße des Containers 221 MB, was Tim als ziemlich groß einschätzt. Um die Größe zu reduzieren, führt er ein helleres Basisbild ein.
Durch die Modifikation der Program.cs Datei setzt er die Containerfamilie auf jammy-chiseled, ein kleineres auf Ubuntu basierendes Image:
builder.Services.Configure<ContainerOptions>(options => options.ContainerFamily = "jammy-chiseled");builder.Services.Configure(Of ContainerOptions)(Sub(options) options.ContainerFamily = "jammy-chiseled")Anschließend führt er den Veröffentlichungsbefehl erneut aus und überprüft nach dem Neuaufbau des Containers erneut die Größe des Images.
Die neue Bildgröße beträgt 113 MB - eine Reduzierung um etwa 100 MB! Trotz des geringeren Umfangs funktioniert die Anwendung identisch.
Tim demonstriert das Löschen des Containers, um den Arbeitsbereich aufzuräumen. Das Docker-Image bleibt jedoch verfügbar, sodass der Container bei Bedarf neu erstellt werden kann.
Er betont, dass der Container, sobald er gebaut ist, auch genutzt werden kann:
Tim schließt das Video ab, indem er die wichtigsten Vorteile der Verwendung der .NET CLI für die Containerisierung hervorhebt:
jammy-chiseled reduziert die Containergröße.Tims Ansatz zur Containerisierung von C#-Anwendungen mit der .NET CLI ist einfach, schnell und effektiv. Mit seiner Methode können Entwickler Container erstellen und optimieren, ohne dass sie umfangreiche Docker-Kenntnisse benötigen.
Durch den Einsatz von Linux-Containern, optimierten Basis-Images und optimierten Veröffentlichungsbefehlen ermöglicht diese Technik Entwicklern eine effiziente Containerisierung ihrer Anwendungen mit minimalem Aufwand.
Wenn Sie tiefer eintauchen möchten, sollten Sie sich das Video von Tim Corey ansehen. Sie bietet eine klare, schrittweise Anleitung für den gesamten Prozess.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy