是否可以使用 dotnet watch + 调试在 docker 中运行 .net core 应用程序

Is it possible to run a .net core app in docker with dotnet watch + debugging

提问人:InfoSpunge 提问时间:10/5/2023 最后编辑:TylerHInfoSpunge 更新时间:10/10/2023 访问量:37

问:

我想让我的 docker 容器在源代码中进行更改时重新启动该过程。 我发现“dotnet watch --project ...”它像轻而易举地检测更改一样工作,但我无法在 Rider 中使用它进行调试。

我构建了整个应用程序并调试工作,但随后它没有检测到文件更改。

似乎 dotnet watch 与调试器不兼容。我已经搜索了 2 个工作日。找不到我的答案。

如果存在一些合乎逻辑的简单答案来解释为什么这是不可能的,我很想知道。几乎就像每个写博客文章的作者似乎都不需要这个功能,所以他们甚至不谈论它。

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "AiaApi.dll"]

上面的示例显示了 dockerfile 的最后阶段,它使我能够使用调试,但在文件更改后不能重新加载。

ENTRYPOINT ["dotnet", "watch", "--project", "Core", "run", "--urls=http://+:5000", "--configuration", "Debug"]

上面的示例显示了在文件更改时启用重新加载的命令,但没有调试。

docker 调试 .net-core watch

评论

0赞 Hans Kilian 10/6/2023
它不起作用的原因是最终映像中没有源代码。Dockerfile 的目标是将可执行代码打包到可供部署的映像中。它不适用于交互式开发。如果你想这样做,你需要一个非常不同的 Dockerfile。然后,您拥有的 Dockerfile 将不适合部署。
1赞 InfoSpunge 10/9/2023
嗯,不确定你是在分析我的dockerfile还是向我解释整个情况。我发现的每个教程都向我展示了,要使调试正常工作,您必须使Dockerfile处于“最终”状态。这时调试就可以工作了,但是由于整个内容都已打包,因此我无法访问源文件。我还没有找到一种方法来进行调试工作,同时在 docker 容器中保持对我的代码的访问。理想的情况是调试工作正常,它会检测到我的本地更改并开始自动重建或重新调试。如果你知道如何去做,我很想知道。

答: 暂无答案