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




