Výchozí port ASP.NET Core se změnil z 80 na 8080
Výchozí port ASP.NET Core nakonfigurovaný v imagích kontejnerů .NET se aktualizoval z portu 80 na 8080.
Přidali jsme také novou ASPNETCORE_HTTP_PORTS
proměnnou prostředí jako jednodušší alternativu k ASPNETCORE_URLS
. Nová proměnná očekává seznam čísel portů oddělený středníkem, zatímco starší proměnná očekává složitější syntaxi.
Aplikace vytvořené pomocí staršího WebHost.CreateDefaultBuilder() rozhraní API nebudou respektovat novou ASPNETCORE_HTTP_PORTS
proměnnou prostředí. A teď už ASPNETCORE_URLS
se automaticky nenastaví, přepne se tak, aby používal výchozí adresu URL http://localhost:5000
, nikoli http://*:80
dříve.
Předchozí chování
Před .NET 8 můžete spustit kontejner, který očekával, že port 80 bude výchozím portem a bude mít přístup ke spuštěné aplikaci.
Můžete například spustit následující příkaz a pak k aplikaci přistupovat místně na portu 8000, který se mapuje na port 80 v kontejneru:
docker run --rm -it -p 8000:80 <my-app>
Nové chování
Počínaje rozhraním .NET 8, pokud v kontejneru namapujete na port 80, aniž byste explicitně nastavili port ASP.NET Core použitý v kontejneru na 80, všechny pokusy o připojení k namapovanému portu selžou.
Pokud například spustíte následující příkaz, nebudete se moct k aplikaci připojit místně pomocí portu 8000.
docker run --rm -it -p 8000:80 <my-app>
Místo toho změňte příkaz tak, aby používal port 8080 v kontejneru:
docker run --rm -it -p 8000:8080 <my-app>
Rozdíl v chování můžete vidět v následujících příkladech.
Port 80
mapování (případ selhání):
$ docker run --rm -d -p 8000:80 mcr.microsoft.com/dotnet/samples:aspnetapp
ba88b746bd7097e503f8ab6e5320c595640e242f6de4f734412944a0e2836acc
$ curl http://localhost:8000/Environment
curl: (56) Recv failure: Connection reset by peer
$ docker kill ba88b746bd7097e503f8ab6e5320c595640e242f6de4f734412944a0e2836acc
ba88b746bd7097e503f8ab6e5320c595640e242f6de4f734412944a0e2836acc
Port 8080
mapování:
$ docker run --rm -d -p 8000:8080 mcr.microsoft.com/dotnet/samples:aspnetapp
74d866bdaa8a5a09e4a347bba17ced321d77a2524a0853294a123640bcc7f21d
$ curl http://localhost:8000/Environment
{"runtimeVersion":".NET 8.0.0-rc.1.23419.4","osVersion":"Alpine Linux v3.18","osArchitecture":"Arm64","user":"root","processorCount":4,"totalAvailableMemoryBytes":4123820032,"memoryLimit":0,"memoryUsage":30081024,"hostName":"74d866bdaa8a"}
$ docker kill 74d866bdaa8a5a09e4a347bba17ced321d77a2524a0853294a123640bcc7f21d
74d866bdaa8a5a09e4a347bba17ced321d77a2524a0853294a123640bcc7f21d
Mapování portu 80
s nastaveným ASPNETCORE_HTTP_PORTS
na port 80
:
$ docker run --rm -d -p 8000:80 -e ASPNETCORE_HTTP_PORTS=80 mcr.microsoft.com/dotnet/samples:aspnetapp
3cc86b4b3ea1a7303d83171c132b0645d4adf61d80131152936b01661ae82a09
$ curl http://localhost:8000/Environment
{"runtimeVersion":".NET 8.0.0-rc.1.23419.4","osVersion":"Alpine Linux v3.18","osArchitecture":"Arm64","user":"root","processorCount":4,"totalAvailableMemoryBytes":4123820032,"memoryLimit":0,"memoryUsage":95383552,"hostName":"3cc86b4b3ea1"}
$ docker kill 3cc86b4b3ea1a7303d83171c132b0645d4adf61d80131152936b01661ae82a09
3cc86b4b3ea1a7303d83171c132b0645d4adf61d80131152936b01661ae82a09
Zavedená verze
.NET 8 Preview 1
Typ změny
Tato změna je změna chování.
Důvod změny
Změna čísla portu byla provedena kvůli potřebě zajistit dobrou použitelnost při přechodu na non-root
uživatele. Spuštění jako non-root
uživatel vyžaduje použití neprivilegovaného portu v některých prostředích. Vzhledem k tomu, že port 80, předchozí výchozí port, je privilegovaný port, výchozí port se aktualizoval na port 8080, což je neprivilegovaný port.
Doporučená akce
Na tuto zásadní změnu můžete reagovat dvěma způsoby:
- (Doporučená akce) Explicitně nastavte
ASPNETCORE_HTTP_PORTS
proměnné aASPNETCORE_HTTPS_PORTS
ASPNETCORE_URLS
proměnné prostředí na požadovaný port. Příklad:docker run --rm -it -p 8000:80 -e ASPNETCORE_HTTP_PORTS=80 <my-app>
- Aktualizujte existující příkazy a konfiguraci, které místo toho odkazují na port 800 s očekávaným výchozím portem portu 80. Příklad:
docker run --rm -it -p 8000:8080 <my-app>
Pokud byla vaše aplikace vytvořena pomocí starší WebHost.CreateDefaultBuilder() metody, nastavte ASPNETCORE_URLS
(ne ASPNETCORE_HTTP_PORTS
). Příklad: docker run --rm -it -p 8000:80 -e ASPNETCORE_URLS=http://*:80 <my-app>
.
Pokud používáte Kubernetes nebo Docker Compose, musíte změnit port podle těchto schémat. Příklady najdete v tématu Použití .NET s Kubernetes.
Pokud k hostování aplikace kontejneru ASP.NET Core používáte služby kontejneru Azure, musíte prostředí kontejneru aktualizovat a nastavit požadovaný port:
- Pro službu Aplikace Azure nastavte
WEBSITES_PORT
rozhraní příkazového řádku nebo na portálu. - Pro Azure Container Apps můžete port změnit při vytváření prostředků.
- V případě služby Azure Container Instances můžete port změnit při vytváření prostředků.
Ovlivněná rozhraní API
Nezaokrouhlovat.