Porta ASP.NET Core padrão alterada de 80 para 8080
A porta ASP.NET Core padrão configurada em imagens de contêiner .NET foi atualizada da porta 80 para 8080.
Também adicionamos a nova ASPNETCORE_HTTP_PORTS
variável de ambiente como uma alternativa mais simples ao ASPNETCORE_URLS
. A nova variável espera uma lista delimitada por ponto-e-vírgula de números de portas, enquanto a variável mais antiga espera uma sintaxe mais complicada.
Os aplicativos criados usando a API mais antiga WebHost.CreateDefaultBuilder() não respeitarão a nova ASPNETCORE_HTTP_PORTS
variável de ambiente. E agora que ASPNETCORE_URLS
isso não é mais definido automaticamente, eles mudarão para usar uma URL padrão de , em vez http://*:80
de http://localhost:5000
, como anteriormente.
Comportamento anterior
Antes do .NET 8, você podia executar um contêiner que esperava que a porta 80 fosse a porta padrão e pudesse acessar o aplicativo em execução.
Por exemplo, você pode executar o seguinte comando e, em seguida, acessar o aplicativo localmente na porta 8000, que é mapeada para a porta 80 no contêiner:
docker run --rm -it -p 8000:80 <my-app>
Novo comportamento
A partir do .NET 8, se você mapear para a porta 80 no contêiner sem definir explicitamente a porta ASP.NET Core usada no contêiner como 80, qualquer tentativa de se conectar a essa porta mapeada falhará.
Por exemplo, se você executar o comando a seguir, não poderá se conectar ao aplicativo localmente usando a porta 8000.
docker run --rm -it -p 8000:80 <my-app>
Em vez disso, altere o comando para usar a porta 8080 dentro do contêiner:
docker run --rm -it -p 8000:8080 <my-app>
Você pode ver a diferença de comportamento nos exemplos a seguir.
Porta 80
de mapeamento (caso de falha):
$ 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
Porta 8080
de mapeamento :
$ 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
Porta 80
de mapeamento com ASPNETCORE_HTTP_PORTS
set to 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
Versão introduzida
.NET 8 Visualização 1
Tipo de alteração
Esta mudança é uma mudança comportamental.
Razão para a alteração
A alteração no número da porta foi feita devido à necessidade de fornecer uma boa experiência de usabilidade ao mudar para um non-root
usuário. A execução como non-root
usuário requer o uso de uma porta não privilegiada em alguns ambientes. Como a porta 80, a porta padrão anterior, é uma porta privilegiada, o padrão foi atualizado para a porta 8080, que é uma porta não privilegiada.
Ação recomendada
Há duas maneiras de responder a essa mudança de rutura:
- (Ação recomendada) Defina explicitamente as
ASPNETCORE_HTTP_PORTS
variáveis ,ASPNETCORE_HTTPS_PORTS
e ambienteASPNETCORE_URLS
para a porta desejada. Exemplo:docker run --rm -it -p 8000:80 -e ASPNETCORE_HTTP_PORTS=80 <my-app>
- Atualize os comandos e a configuração existentes que dependem da porta padrão esperada da porta 80 para fazer referência à porta 8080. Exemplo:
docker run --rm -it -p 8000:8080 <my-app>
Se seu aplicativo foi criado usando o método mais antigo WebHost.CreateDefaultBuilder() , defina ASPNETCORE_URLS
(não ASPNETCORE_HTTP_PORTS
). Exemplo: docker run --rm -it -p 8000:80 -e ASPNETCORE_URLS=http://*:80 <my-app>
.
Se você estiver usando o Kubernetes ou o Docker Compose, precisará alterar a porta de acordo com esses esquemas. Para obter exemplos, consulte Usando o .NET com o Kubernetes.
Se você usar os serviços de contêiner do Azure para hospedar seu aplicativo de contêiner ASP.NET Core, precisará atualizar seu ambiente de contêiner para definir a porta desejada:
- Para o Serviço de Aplicativo do Azure, defina
WEBSITES_PORT
usando a CLI ou no portal. - Para Aplicativos de Contêiner do Azure, você pode alterar a porta como parte da criação de recursos.
- Para Instâncias de Contêiner do Azure, você pode alterar a porta como parte da criação de recursos.
APIs afetadas
Nenhum.