Umwandeln einer .Net Core Konsolenanwendung zum Dockercontainer

Dieses Beispiel bezieht sich auf mein eigenes Projekt auf Github , welches ich um ein Dockerimage erweitert habe.
Zuerst braucht ihr eine Anwendung, die bereits über die Kommandozeile ausgeführt werden kann. Ihr
könnt euch dafür auch ein neues Hello World-Projekt anlegen.In meinem Fall gibt es eine Anwendung,
die mit dotnet MailToGiteaIssue.dll [Parameter]
aufgerufen werden kann.
Aufbau des Dockerfiles
Das Dockerimage sieht folgendermaßen aus:
FROM mcr.microsoft.com/dotnet/core/runtime:3.1-alpine
COPY MailToGiteaIssue/bin/Release/netcoreapp3.1/publish/ /App
WORKDIR /App
ENTRYPOINT ["dotnet", "MailToGiteaIssue.dll"]
Mit FROM gebe ich ein Basisimage an. Hier verwendet ich die .Net Core Runtime, damit ich den
Befehl dotnet
zur Verfügung habe.In meiner Pipeline wird die Anwendung von außen kompiliert und
mit dotnet publish
veröffentlicht.Der Befehl COPY kopiert diese Dateien (die kompilierte
Anwendung) nach /App im Docker-Container.Mit WORKDIR wird das aktuelle Verzeichnis des Containers
geändert. Diesen Befehl kann man sich wie cd
vorstellen.ENTRYPOINT legt den Startpunkt des
Containers fest. Das bedeutet, dass beim Start dieses Containers der
Befehl dotnet MailToGiteaIssue.dll
aufgerufen wird.
Euer ENTRYPOINT kann individuell anders aussehen, je nachdem, wie euer Projekt heißt oder ob weitere Parameter notwendig sind.
Erstellen und aufrufen des Containers
Als Erstes müssen wir das Image bauen. Dazu verwenden wir docker build:
docker build -t my-app -f Dockerfile .
Mit dem Parameter -t geben wir unserem Image einen Namen und Tag. Der Tag wird am Ende mit einem Doppelpunkt angegeben. Hier habe ich das Image my-app genannt und den Tag weggelassen.
Da das Image nun lokal bekannt ist, führen wir den Container aus:
docker run my-app
Nun wird eure Anwendung lokal im Container ausgeführt. Wenn ihr das Image aktualisieren wollt, müsst ihr die Anwendung neu kompilieren und mit docker build das Dockerfile neu ausführen.
Fazit
Wie ihr gesehen habt, ist das Portieren einer Konsolenanwendung recht einfach. Die kompilierte
Anwendung muss mit copy
in das Image übertragen werden. Mit entrypoint
legt ihr den Aufruf eurer
Anwendung fest.
Bildnachweis: Pixabay.com