it-swarm.com.de

Wie man das von VS 2017 erzeugte Docker-Image laufen lässt

Docker noob hier ...

Wie führt man das Docker-Image Ihrer Asp.Net CORE-App, die von Visual Studio 2017 in der Befehlszeile erstellt wird, ordnungsgemäß aus?

docker run -it -d -p 80:32769 myappimage

scheint nicht richtig zu funktionieren (Bild läuft, aber ich kann nicht zu meiner App navigieren)

Hinweis: Ich habe einfach ein Beispiel für eine ASP.Net Core-Webanwendung mit der Standardvorlage in Studio erstellt und die Docker-Unterstützung hinzugefügt (indem Sie auf das Kontrollkästchen "Docker-Unterstützung hinzufügen" klicken). In diesem Fall fügt Studio eine Docker-Datei und einige Docker-Compose-Dateien hinzu.

Wenn Visual Studio das Bild "ausführt" (durch Drücken von F5), kann ich erfolgreich zu meiner Anwendung navigieren (über " http: // localhost: 32789 " oder einen ähnlichen Host-Port. Die App im Container befindet sich auf Port 80). Aber ich kann den Befehl nicht herausfinden, ihn selbst an der Befehlszeile auszuführen. 

Die Standard-Docker-Datei, die Studio Ihrem Projekt hinzufügt, ist ...

FROM Microsoft/aspnetcore:1.1
ARG source
WORKDIR /app
EXPOSE 80
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "WebApplication2.dll"]
13
HokieMike

Ja, es ist möglich. Erstellen Sie Ihre Lösung in der Konfiguration Release neu, und versuchen Sie, das docker-compose-Projekt mit F5 auszuführen, um sicherzustellen, dass das Image aktualisiert wird und Ihre App einwandfrei funktioniert. Führen Sie dann docker imagesKonsolenbefehl aus. Sie sehen etwas wie:

REPOSITORY   TAG      IMAGE ID       CREATED              SIZE
Your.App     latest   673b79a6bb3d   About a minute ago   294 MB

Sie müssen lediglich einen neuen Container von diesem Bild aus ausführen und den freigelegten Port einem localhost-Port zuordnen. Der exponierte Port ist standardmäßig 80 (siehe Dockerfile). Zum Beispiel:

docker run -d -p 1234:80 --name some_name Your.App:latest

Dann sollte Ihre App unter http://127.0.0.1:1234/ verfügbar sein.

Erläuterung:

Wenn die Konfiguration Debug festgelegt ist, werden von Visual Studio nicht bearbeitbare empty - Bilder erstellt. Es ordnet den leeren Container manuell dem Dateisystem zu, um das Debugging, die Funktionen "Bearbeiten und Fortfahren" usw. zu ermöglichen. Aus diesem Grund ist dev image ohne Visual Studio unbrauchbar. Erstellen Sie das Image in der Konfiguration Release, um es verwendbar zu machen.

Der vollständige Veröffentlichungsprozess wird in der Dokumentation beschrieben: Visual Studio Tools for Docker

Veröffentlichen von Docker-Bildern

Nachdem Sie den Entwicklungs- und Debug-Zyklus Ihres .__ abgeschlossen haben. In dieser Anwendung helfen Ihnen die Visual Studio-Tools für Docker beim Erstellen von das Produktionsimage Ihrer Anwendung. Ändern Sie die Debug-Dropdown-Liste in Lassen Sie los und erstellen Sie die Anwendung. Das Werkzeug erstellt das Bild mit dem :latest-Tag, den Sie in Ihre private Registry verschieben können, oder Docker Hub.

23
Ilya Chumakov

Sie verwirren hier etwas. Wenn Sie Ihr Projekt mit F5 in Visual Studio 2017 ausführen, führen Sie es mit IISExpress an einem zufällig konfigurierten Port aus. 

In Docker haben Sie kein IISExpress, da Ihre App nur von Kestrel gehostet wird (Kestrel wird immer auch hinter IIS/IISExpress verwendet, sie fungieren jedoch als Reverse Proxy). 

Der Standardport für Kestrel ist 5000, Sie können ihn jedoch auch konfigurieren. In meinem Beitrag hier finden Sie weitere Informationen zu den Methoden, mit denen Sie die empfangene IP/den Port konfigurieren müssen. 

0
Tseng