2017-06-13 3 views
0

Diese Frage sollte hoffentlich ziemlich einfach sein.Auf dotnet SDK und Docker Containern

Angenommen, Sie versuchen, eine Asp.Net Core Web API auszuführen. Die App läuft innerhalb eines Docker-Containers innerhalb einer Neuinstallation von Linux (Geschmack spielt keine Rolle). Der Container lebt in einem POD in einem Kubernetes-Cluster, das mit Docker-Tools ausgeliefert wird.

Das muss Dockerfile eine bestimmte Version von aspnetcore zum Ziel und sieht ungefähr so ​​aus:

FROM microsoft/aspnetcore:1.1 
COPY . /app 
WORKDIR /app 
EXPOSE 5000/tcp 
ENV ASPNETCORE_URLS http://*:5000 
ENTRYPOINT ["dotnet", "run"] 

Testing Dinge, Ich betreibe einen Docker Befehl als so ...

enter image description here

Worauf ich mich stoße ist das; Der "dotnet" -Befehl in der von mir angenommenen ENTRYPOINT-Definition führt das .Net Core SDK aus.

Wenn der Container auf diesem Linux-Agent nicht das SDK installiert hat oder das SDK, das installiert wird, eine ältere Version ist, die das SDK, das Sie verwenden möchten, wie genau würden Sie dies Docker erstellen? Im Wesentlichen bezieht sich der "dotnet" -Befehl im ENTRYPOINT auf ein Programm, das nicht existiert?

Soll ich das SDK auch mit dem Container verpacken? Wenn ja, sollte diese Zeile lesen ENTRYPOINT ["./dotnet", "run"], weil es auf Linux ist? Wenn ja, welche weiteren Schritte muss ich ausführen, um das SDK zu packen?

Meine Annahme war, dass das SDK bereits in den Container mit Microsoft/Aspnetcore verpackt ist: 1.1? Wenn ja, gibt es eine Möglichkeit, die komprimierte ausführbare Datei in der ENTRYPOINT-Definition zu referenzieren?

Jeder Einblick würde sehr geschätzt werden!

Antwort

3

Wenn Sie das SDK benötigen, denke ich, Sie wollen https://hub.docker.com/r/microsoft/aspnetcore-build/.

Das Bild, das Sie verwenden, enthält nur die Laufzeit, nicht das SDK.

+0

Schön! Arbeitete, das ist großartig, danke. So viele neue Informationen kamen herein, dass ich dieses Detail vermisste. Swore Ich dachte, Microsoft/Aspnetcore hatte alles ... Ich habe mich geirrt ;-) –

+0

Sie können dieses Bild verwenden, aber Sie müssen Ihre App auf dem Host-Rechner kompilieren und dann im Container "dotnet ./path/to/ yourapp.dll " Im Moment zahlen Sie die Kosten für die Kompilierung beim Start, die vermieden werden kann. – TerribleDev

Verwandte Themen