ASP.NET Core Anwendung als Docker Container mit Docker-Compose deployen
Mit Docker-Compose wird aus einer Vielzahl aus einzelnen C# .NET Core Docker Microservices eine Anwendung. Mit der Visual Studio IDE kann man das relativ einfach erstellen. Mit wenigen Klicks werden alle Konfigurationsdateien erstellt und das Programm läuft über Docker Desktop am Rechner und wenige Klicks später bereits in der Cloud.
ASP.NET Core Anwendung als Docker Container mit Docker-Compose deployen
Im letzten Artikel wurde bereits die PostgreSQLConnect ASP.NET Anwendung mit Hilfe von Visual Studio in einen Docker Container verpackt. Ich habe gezeigt wie einfach man mit Visual Studio aus einem .NET Core Projekt einen Docker Container erstellt. Was aber, wenn mehr als ein Projekt zur fertigen Applikation gehören? Wenn man eine Anwendung in der Microservice-Architektur baut, dann greifen viele unterschiedliche Microservices (z.B. C# Projekte) ineinander. Es wäre relativ langweilig diese einzeln manuell zu einem fertigen Programm zu deployen. Schneller geht es mit einer Orchestrierung.
Containerorchestrierung
Die Orchestrierung beschreibt, wie einzelne Container als Gesamtkonzept zusammenspielen. Bei Docker Desktop ist Docker-Compose als Orchestrierungssoftware dabei. Docker-Compose ist ebenso einfach wie Docker selber. Wieder erstellt man eine einzige Datei, das „Rezept“ wie Container untereinander interagieren können. Für die Orchstrierung stellt Visual Studio 2019 ebenfalls eine Hilfe zur Verfügung. Über das Kontextmenü des Projekts unter „Hinzufügen“ findet man den Punkt „Unterstützung für Containerorchestrator…“
Containerorchestrierung hätte meiner Meinung nach als Menüname völlig gereicht. In jedem Fall öffnet sich ein Dialog in dem man eine der verfügbaren Orchestrierungsmethoden wählen kann, in meinem Fall war nur Docker Compose verfügbar.
Zuletzt wird noch die Zielplattform ausgewählt, ich wähle wie schon zuvor Linux, denn die Container werden auf meinem Linux Docker Server laufen. Erstellt wird daraufhin eine docker-compose.yml Konfigurationsdatei.
Docker-Compose
Über Docker Compose mit Visual Studio gibt es einiges zu wissen. Das von mir nun für ein spezifisches Projekt angelegte docker-compose Datei liegt anders als vermutlich erwartet nicht im Projekt, sondern in der übergeordneten Projektmappe. Wenn man kurz nachdenkt wird auch klar weshalb: Über eine Docker-Compose Datei werden beliebig viele Container beschrieben. In einer Projektmappe kann man beliebig viele eigene Container als C# Projekte erstellen und warten, zusätzlich können in der docker-compose.yml auch fertige Container wie beispielsweise eine Datenbank (siehe dazu PostgreSQL) konfiguriert werden. In meinem Projekt beschreibt die Docker-Compose Anleitung nur ein Service mit dem Namen postgresqlconnect als Image (Namen sind immer lowercase!) und mit dem dazu gehörigen Bauplan als Referenz zu dessen Dockerfile. Würde es mehrere C# Projekte geben würden diese 1:1 mit Namen unter dem services Node stehen.
Über das neu hinzugekommenen Docker Compose Ausführungsknopf lässt sich nun die Orchestrierung starten. Alle definierten Container werden erstellt und mit Docker ausgeführt.
Fazit
Docker-Compose ist ein sehr einfach zu bedienendes aber mächtiges Tool. Sofern installiert kann es in Visual Studio verwendet werden. Die IDE nimmt dem Anwender viel Arbeit. Meist reicht die Standardkonfiguration aus um schnell ein neues Microservice zu testen und debuggen.