visual-studio– 如何在Visual Studio的Linux Docker容器中调试.NET Core app runnig

visual-studio– 如何在Visual Studio的Linux Docker容器中调试.NET Core app runnig,第1张

概述我有自己的手写Dockerfile / docker-compose文件.我从命令行启动容器.现在我想将VS2017(不是VSCode)连接到Docker(基于Linux)容器中的应用程序.它似乎应该是相当容易的任务,但我找不到任何有关如何执行此 *** 作的信息.我仔细阅读了指南https://github.com/Microsoft/MIEngine/wiki/

我有自己的手写Dockerfile / docker-compose文件.我从命令行启动容器.现在我想将VS2017(不是VSCode)连接到Docker(基于Linux)容器中的应用程序.它似乎应该是相当容易的任务,但我找不到任何有关如何执行此 *** 作的信息.

我仔细阅读了指南https://github.com/Microsoft/MIEngine/wiki/Offroad-Debugging-of-.NET-Core-on-Linux—OSX-from-Visual-Studio.起初它看起来像我需要的 – 关于如何远程调试在linux中运行的netcore应用程序的描述.但它只讲述了故事的一部分 – 如何通过SSH进行调试.刚刚提到Docker,但没有说明如何远程调试Docker中的应用程序.
我想这里应该没有太多具体的Docker,它只是在Docker中运行vsdbg并附加在这里.但显然这是一个非常常见的开发用例,并且奇怪的是没有关于此的好消息.

当然,有VS Tools for Docker使用它我们可以轻松地在Docker容器内调试应用程序.但对我来说VS Tools for Docker非常糟糕.是的,他们一开始就无缝工作.但绝对不清楚幕后发生了什么.

看起来我们只是可以查看Docker的VSTools并尝试重现它.但这不是很明显.它为docker-compose(docker-compose.vs.deBUG.g.yml)添加了一个额外的“deBUG”yaml文件,它应该可以进行调试.我把那个yaml添加到我手写的docker-compose,运行Dockers但是如何附加VS?我获得了我的容器的IP,试图在该IP上找到一个远程调试器,并且VS无法看到任何东西.此外,由Tools for Docker创建的deBUG.yaml对于暴露4022端口没有任何意义,这是可疑的.

附:在windows容器上找到了一个很好的指南 – https://github.com/riskfirst/debugging-aspnet-core-windows-docker最佳答案这个怎么样:

如果您的服务基于microsoft / dotnet映像,请根据同一映像创建一个新的dockerfile,然后安装调试器,ssh和unzip.

FROM microsoft/dotnetRUN apt-get update && apt-get -y install openssh-server unzipRUN mkdir /var/run/sshd && chmod 0755 /var/run/sshd RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin without-password/g' /etc/ssh/sshd_configRUN sed -i 's/#StrictModes yes/StrictModes no/g' /etc/ssh/sshd_configRUN service ssh restartRUN mkdir /root/.vs-deBUGger && chmod 0755 /root/.vs-deBUGgerRUN curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v vs2017u1 -l /root/.vs-deBUGger/EXPOSE 22  

构建并将其推送到您的注册表.

docker build -t myregistry/dotnetdeBUGger .docker push myregistry/dotnetdeBUGger 

接下来确保您的服务构建将PDB文件作为便携式PDB输出
https://github.com/Microsoft/MIEngine/wiki/Offroad-Debugging-of-.NET-Core-on-Linux—OSX-from-Visual-Studio

在构建服务的docker镜像时,确保dll中包含PDB文件.

然后,当您的容器正在运行并且您决定需要对其进行调试时,可以将调试器容器作为侧面汽车容器附加到服务:

docker run -d -p 10222:22 --pID container:

然后在visual studio中,转到Tools>选项> Crossplatform>连接管理器 – 并添加新连接.指定容器的IP或主机名,10222作为端口(docker run命令中的端口),root作为没有密码的用户.

希望有所帮助

总结

以上是内存溢出为你收集整理的visual-studio – 如何在Visual Studio的Linux Docker容器中调试.NET Core app runnig全部内容,希望文章能够帮你解决visual-studio – 如何在Visual Studio的Linux Docker容器中调试.NET Core app runnig所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1248407.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)