NET Core Docker „Hello World“

Ich vermute, dass es viele Leute wie mich gibt, die Anwendungen unter Windows mit .NET entwickelt haben und nun feststellen, dass sie ihre Projekte in Containern auf öffentlicher Infrastruktur bereitstellen möchten.

Net Core ist eine kostenlose Open-Source-Plattform/Runtime, auf die ich die meisten meiner C#-Anwendungen problemlos portieren kann. Da ich plattformübergreifend bin, kann ich diese NET Core-Anwendungen in einem Docker-Container hosten. Ich präsentiere hier einige einfache Anweisungen für eine minimale „Hello World“-Anwendung, die einige Kernkonzepte in Lösungen dieses Typs demonstriert.

Ich habe verwendet Turmfalke in letzter Zeit viel als serverseitige Komponententechnologie für Web-Apps. In diesem einfachen Beispiel verwende ich es so, als würden Sie Node.js verwenden, um einen Webserver mit minimalem Aufwand hochzufahren.

Ich gehe davon aus, dass Sie für diese Anweisungen einen Ubuntu 16.04 Linux-Server haben. Zuerst installieren wir die NET Core-SDK

wget -q 
sudo dpkg -i packages-microsoft-prod.deb

sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-2.1

Wir müssen auch installieren Docker

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
curl -fsSL  | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64]  \
   $(lsb_release -cs) \
   stable"
 sudo apt-get update
 sudo apt-get install docker-ce

Erstellen Sie ein neues Verzeichnis und erstellen Sie eine neue Anwendung …

mkdir helloworld
cd helloworld
dotnet new console
dotnet add package Microsoft.AspNetCore --version 2.1.1

Das add package Befehl, verwendet NuGet um die Abhängigkeit zu installieren, die wir für unseren Kestrel-Webserver benötigen.

Bearbeiten Program.cs um diese Klassendefinitionen zu enthalten …

namespace helloworld
{
public class Startup
{
  public void Configure(IApplicationBuilder applicationBuilder,                      IHostingEnvironment hostingEnvironment)
  {
    applicationBuilder.Run(async context =>
      {
        await context.Response.WriteAsync("Hello World");
      });
  }
}

class Program
{
  static void Main(string[] args)
  {
    WebHost.CreateDefaultBuilder()
    .UseStartup<Startup>()
    .UseKestrel()
    .UseUrls("http://0.0.0.0:5050")
    .Build()
    .Run();
  }
}
}

Dies ist der minimale Code, der zum Starten eines Webservers auf Port 5050 und zum Bereitstellen einer Klasse erforderlich ist. Startupdie die Zeichenfolge „Hello World“ zurückgibt.

Net Core verfügt über einen Veröffentlichungsbefehl, der einen Ordner mit allen Dateien erstellt, die Sie zum Verteilen Ihrer Anwendung für ein bestimmtes Betriebssystem benötigen. Um die Anwendung für Linux zu veröffentlichen, führen wir …

dotnet publish --runtime=linux-x64

Sobald dies erfolgreich abgeschlossen wurde, benötigen wir eine `dockerfile’-Definition, um das Docker-Image zu erstellen …

FROM microsoft/dotnet:2.1-runtime
COPY ./bin/Debug/netcoreapp2.1/linux-x64/publish/ ./
ENTRYPOINT ["dotnet", "helloworld.dll"]

Diese einfache Docker-Datei verwendet das von Microsoft bereitgestellte Basisimage, kopiert die veröffentlichte Anwendung, die wir im vorherigen Schritt erstellt haben, und legt die Anwendung fest, die wir als Einstiegspunkt verwenden möchten, wenn der Container instanziiert wird.

Das Docker-Image wird jeweils mit diesen beiden Befehlen erstellt und ausgeführt …

docker build . -t helloworld
docker run -p 5050:5050 helloworld

Anschließend können Sie Ihre Anwendung mit Ihrem bevorzugten Webbrowser testen (z. B. indem Sie eine URL von auf Ihrer Maschine.)

Similar Posts

Leave a Reply

Your email address will not be published.