我将我的应用程序迁移到.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
型
1条答案
按热度按时间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>
因此,您需要更改端口Map
8860:8080
或更改容器的端口(例如,通过将-e ASPNETCORE_HTTP_PORTS=80
参数传递给docker run
或在FROM mcr.microsoft.com/dotnet/aspnet:8.0
之后添加ENV ASPNETCORE_HTTP_PORTS=80
)。