Containerisierung von C#-Anwendungen mit Docker: Schritt-für-Schritt-Anleitung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum Ihr C#-Projekt Docker braucht?

\n\n

Stellen Sie sich vor: Sie haben eine coole C#-Anwendung auf Ihrem Laptop mit Windows 11 geschrieben, alle Bibliotheken installiert, die Datenbank konfiguriert, und sie läuft einwandfrei. Aber wenn Sie das Projekt an einen Kollegen mit macOS weitergeben oder auf einen Linux-Server hochladen, beginnt das Chaos: "Ich habe eine andere .NET-Version", "Wo ist SQL Server?", "In deinem Code sind die Pfade zu den Dateien fest codiert"... Kommt Ihnen das bekannt vor?

\n\n

Genau hier hilft die Containerisierung von C#-Anwendungen mit Docker. Docker ermöglicht es Ihnen, Ihre Anwendung zusammen mit allen Abhängigkeiten, Einstellungen und sogar dem Betriebssystem in einen leichten Container zu packen. Und er wird überall gleich funktionieren: auf Ihrem PC, auf dem Server Ihres Kollegen, in der AWS- oder Azure-Cloud.

\n\n

In diesem Artikel werden wir von A bis Z durchgehen, wie Sie C#-Anwendungen mit Docker containerisieren. Sie erfahren, wie Sie ein Dockerfile für ASP.NET Core erstellen, wie Sie die Image-Größe optimieren und wie Sie alles mit einem einzigen Befehl starten. Los geht's!

\n\n

Was ist Docker und warum braucht ein C#-Entwickler es?

\n\n

Docker ist eine Plattform zur Containerisierung von Anwendungen. Ein Container ist eine isolierte Umgebung, die Ihre Anwendung und alles, was sie zum Ausführen benötigt, enthält: Runtime, Bibliotheken, Umgebungsvariablen, Konfigurationen. Im Gegensatz zu virtuellen Maschinen nutzen Container den gemeinsamen OS-Kernel, daher starten sie schneller und benötigen weniger Speicherplatz.

\n\n

Für einen .NET-Entwickler bietet Docker mehrere Killer-Features:

\n\n
    \n
  • Beseitigung des Problems "Auf meinem Rechner funktioniert es" — der Container garantiert eine identische Umgebung
  • \n
  • Vereinfachung von CI/CD — Sie erstellen das Image einmal und verwenden es überall
  • \n
  • Microservice-Architektur — jeder Dienst in C# lebt in seinem eigenen Container
  • \n
  • Skalierung — starten Sie problemlos 10 Kopien Ihrer API in Sekundenschnelle
  • \n
  • Isolation — Abhängigkeiten eines Projekts kollidieren nicht mit denen eines anderen
  • \n
\n\n

Wenn Sie noch keine Containerisierung von .NET-Anwendungen nutzen, ist es höchste Zeit, damit zu beginnen. Und das machen wir jetzt.

\n\n

Vorbereitung: Was Sie installieren müssen

\n\n

Bevor Sie mit der Containerisierung von C# beginnen, stellen Sie sicher, dass Sie Folgendes installiert haben:

\n\n
    \n
  1. Docker Desktop — laden Sie es von der offiziellen Website herunter. Für Windows aktivieren Sie unbedingt WSL 2 (Hinweise erhalten Sie bei der Installation).
  2. \n
  3. .NET SDK 8.0 (oder 7.0/9.0 — das ist nicht entscheidend) — laden Sie es von Microsoft herunter.
  4. \n
  5. VS Code oder Visual Studio 2022 — für komfortables Arbeiten mit Code.
  6. \n
\n\n

Überprüfen Sie die Installation mit folgenden Befehlen im Terminal:

\n\n
docker --version\ndotnet --version
\n\n

Wenn beide Befehle eine Versionsnummer zurückgeben, ist alles bereit für die Docker-Entwicklung für .NET.

\n\n

Erstellen einer einfachen C#-Anwendung zur Containerisierung

\n\n

Für die Demonstration nehmen wir eine minimale ASP.NET Core Web API. Erstellen wir das Projekt in einem leeren Ordner:

\n\n
dotnet new webapi -n MyDockerApp\ncd MyDockerApp
\n\n

Öffnen Sie die Datei Program.cs und vereinfachen Sie sie auf folgende Weise (damit es anschaulich ist):

\n\n
var builder = WebApplication.CreateBuilder(args);\nvar app = builder.Build();\n\napp.MapGet("/", () => "Hello from Dockerized C# App!");\n\napp.Run();
\n\n

Starten Sie die Anwendung lokal, um sicherzustellen, dass alles funktioniert:

\n\n
dotnet run
\n\n

Gehen Sie im Browser zu http://localhost:5000 (oder dem Port, den die Konsole ausgibt). Sehen Sie die Begrüßung? Ausgezeichnet. Jetzt packen wir diese Anwendung in Docker.

\n\n

Schreiben eines Dockerfiles für eine C#-Anwendung

\n\n

Ein Dockerfile ist eine Anleitung zum Erstellen eines Images. Für

Blogs

Buchempfehlungen