.NET 8.0 WebAPI/Swagger Docker拒绝连接

kcrjzv8t  于 5个月前  发布在  .NET
关注(0)|答案(1)|浏览(97)

我将我的应用程序迁移到.NET 8.0,在本地运行它,它工作得很好。
然后我创建了一个镜像,容器。结果,之前工作的页面现在返回“1.2.3.4拒绝连接”。
以前,当我在.NET 7.0中时,API可以工作。
我的基本DockerFile

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env
WORKDIR /app
 
COPY *.csproj ./
RUN dotnet restore
 
COPY . ./
RUN dotnet publish -c Release -o out
 
FROM mcr.microsoft.com/dotnet/aspnet:8.0

WORKDIR /app
RUN chmod -R 755 /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "myapi.dll"]

字符串
我的API运行在端口8860上

49de1a3ce47c   myapi   "dotnet myapi.dll"   13 minutes ago   Up 13 minutes          0.0.0.0:8860->80/tcp, :::8860->80/tcp


info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://[::]:8080
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /app

kiz8lqtg

kiz8lqtg1#

.NET 8 ASP.NET Core Docker镜像有一个突破性的变化-Default ASP.NET Core port changed from 80 to 8080
在.NET容器映像中配置的默认ASP.NET Core端口已从端口80更新为8080。我们还添加了新的ASPNETCORE_HTTP_PORTS环境变量,作为ASPNETCORE_URLS的更简单的替代方案。

以前的行为

在.NET 8之前,您可以运行一个期望端口80为默认端口的容器,并能够访问正在运行的应用程序。
例如,运行以下命令允许您在端口8000本地访问应用程序,该端口Map到容器中的端口80:docker run --rm -it -p 8000:80 <my-app>
因此,您需要更改端口Map8860:8080或更改容器的端口(例如,通过将-e ASPNETCORE_HTTP_PORTS=80参数传递给docker run或在FROM mcr.microsoft.com/dotnet/aspnet:8.0之后添加ENV ASPNETCORE_HTTP_PORTS=80)。

相关问题