我已经使用执行构建了这样的图像
docker build--tag=api--file=Dockerfile_01--no-cache--progress=plain。
基于下面的Dockerfile_01。
来自 mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /bin
复制 *.csproj ./
运行 dotnet 恢复
复制 . ./
运行 dotnet 发布 --configuration 发布 --output /release
来自 mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /bin
复制 --from=build /release .
暴露 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,正如预期的那样。
我该如何解决此问题?
我看到的唯一意外的事情是在日志中,它告诉我由于端口混乱,重定向到安全协议失败。不过,这是明天的问题,目前我尝试使用 5001,即 HTTP。
2025-02-14 17:56:41 信息:Microsoft.Hosting.Lifetime[14]
2025-02-14 17:56:41 正在监听:http://[::]:8080
2025-02-14 17:56:41 信息:Microsoft.Hosting.Lifetime[0]
2025-02-14 17:56:41 应用程序已启动。按 Ctrl+C 关闭。
2025-02-14 17:56:41 信息:Microsoft.Hosting.Lifetime[0]
2025-02-14 17:56:41 托管环境:生产
2025-02-14 17:56:41 信息:Microsoft.Hosting.Lifetime[0]
2025-02-14 17:56:41 内容根路径:/usr/bin
2025-02-14 17:57:02 警告:Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]
2025-02-14 17:57:02 无法确定重定向的 https 端口。
我怀疑我配置端口的方式有些问题,但我看不出在哪里。它也遵循了这个答案的建议。我测试了许多不同的组合,但没有发现任何有用的信息。
当然,为了确保万无一失,我测试了/,/swagger和/swagger.html ,尽管我知道这不是问题所在。