You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Docker中运行ASP.NET Core应用无法访问Swagger的排查求助

Docker中运行ASP.NET Core应用无法访问Swagger的排查求助

我是这样构建镜像的,执行了以下命令:

docker build --tag=api --file=Dockerfile_01 --no-cache --progress=plain .

使用的是下面这个Dockerfile_01

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /bin
COPY *.csproj ./
RUN dotnet restore
COPY . ./
RUN dotnet publish --configuration Release --output /release
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /bin
COPY --from=build /release .
EXPOSE 8080 8081
CMD ["dotnet", "Api.dll"]

启动容器时我执行了这条命令:

docker run --detach --publish 5001:8080 --publish 7001:8081 --name WebApi api

容器看起来运行正常,日志显示程序正在监听8080端口,但当我访问http://localhost:5001时却收到了404错误。而直接用VS对应的配置文件启动应用时,Swagger是能正常显示的。

我该怎么排查这个问题呢?

目前日志里唯一不太正常的是一条关于HTTPS重定向失败的警告,但我现在暂时只关注HTTP的5001端口,这个HTTPS的问题打算明天再处理:

2025-02-14 17:56:41 info: Microsoft.Hosting.Lifetime[14]
2025-02-14 17:56:41       Now listening on: http://[::]:8080
2025-02-14 17:56:41 info: Microsoft.Hosting.Lifetime[0]
2025-02-14 17:56:41       Application started. Press Ctrl+C to shut down.
2025-02-14 17:56:41 info: Microsoft.Hosting.Lifetime[0]
2025-02-14 17:56:41       Hosting environment: Production
2025-02-14 17:56:41 info: Microsoft.Hosting.Lifetime[0]
2025-02-14 17:56:41       Content root path: /usr/bin
2025-02-14 17:57:02 warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]
2025-02-14 17:57:02       Failed to determine the https port for redirect.

我怀疑是端口配置出了问题,但实在找不到哪里出错了。我是按照相关建议来配置的,也试了好几种不同的端口组合,但都没解决问题。

当然,我也试过访问*/、/swagger/swagger.html*这些路径,虽然我知道这应该不是问题所在,但还是确认了一遍。

备注:内容来源于stack exchange,提问作者Konrad Viltersten

火山引擎 最新活动