Freigeben über


Festlegen des Containereinstiegspunkts

Ein Containereinstiegspunkt ist ein Prozess, der so konfiguriert ist, dass er ausgeführt wird, wenn ein Container gestartet wird.

Visual Studio verwendet je nach Projekttyp und Containerbetriebssystem einen benutzerdefinierten Containereinstiegspunkt: Hier sind die verschiedenen Kombinationen:

Containertyp Eingangsstelle
Linux-Container Der Einstiegspunkt ist tail -f /dev/null, was eine unendliche Wartezeit ist, um den Container laufen zu lassen. Wenn die App über den Debugger gestartet wird, ist der Debugger für die Ausführung der App verantwortlich (d. h. dotnet webapp.dll). Wenn sie ohne Debugging gestartet wird, führt das Tooling ein docker exec -i {containerId} dotnet webapp.dll aus, um die App zu starten.
Windows-Container Der Einstiegspunkt ist so etwas wie C:\remote_debugger\x64\msvsmon.exe /noauth /anyuser /silent /nostatus, womit der Debugger so ausgeführt wird, dass er auf Verbindungen lauscht. Diese Methode gilt, wenn der Debugger die App ausführt. Beim Starten ohne Debuggen wird ein docker exec Befehl verwendet. Bei .NET Framework-Web-Apps unterscheidet sich der Einstiegspunkt geringfügig, wobei ServiceMonitor dem Befehl hinzugefügt wird.
Containertyp Eingangsstelle
Linux-Container Für .NET 6 und höher ist der Einstiegspunkt dotnet --roll-forward Major /VSTools/DistrolessHelper/DistrolessHelper.dll --wait. Für .NET 5 und früher ist der Einstiegspunkt tail -f /dev/null. Diese Prozesse verwenden eine unendliche Wartezeit, damit der Container ausgeführt wird, wenn die App nicht ausgeführt wird. Wenn die App gestartet wird, sowohl mit als auch ohne Debugging, ist der Debugger dafür verantwortlich, die App auszuführen (d. h. dotnet webapp.dll) und den Container am Laufen zu halten.
Windows-Container Der Einstiegspunkt ist so etwas wie C:\remote_debugger\x64\msvsmon.exe /noauth /anyuser /silent /nostatus, womit der Debugger so ausgeführt wird, dass er auf Verbindungen lauscht. Bei .NET Framework-Web-Apps unterscheidet sich der Einstiegspunkt geringfügig, wobei ServiceMonitor dem Befehl hinzugefügt wird.

Der Containereinstiegspunkt kann nur in Docker Compose-Projekten und nicht in Einzelcontainerprojekten geändert werden. Siehe Docker Compose-Eigenschaften – Anpassen des App-Startvorgangs.