如何使用VSCode'调试在Docker容器中运行的Java应用程序;s的Java调试器
我有一个Java应用程序(如何使用VSCode'调试在Docker容器中运行的Java应用程序;s的Java调试器,docker,visual-studio-code,Docker,Visual Studio Code,我有一个Java应用程序(.tar)安装到容器上。容器的入口点启动该应用程序 Dockerfile(后端文件夹作为卷装入映像) entrypoint.sh java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -Xmx2048M -jar backend.jar 现在我想使用VSCode的调试器调试正在运行的应用程序。根据VSCode官方文档()的规定,这可以通过命令面板和命令调试器:attach t
.tar
)安装到容器上。容器的入口点启动该应用程序
Dockerfile
(后端文件夹作为卷装入映像)
entrypoint.sh
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -Xmx2048M -jar backend.jar
现在我想使用VSCode的调试器调试正在运行的应用程序。根据VSCode官方文档()的规定,这可以通过命令面板和命令调试器:attach to Node.js process
轻松完成
但在他们的示例中,他们使用Node.js服务器。然而,在我的容器中,没有可以附加调试器的Node.js进程,也找不到适用于Java Spring应用程序的适当命令那么如何将VSCode的Java调试器附加到已经在Docker容器中运行的Java应用程序?
在其文档()的另一个地方,他们陈述了以下内容:
Docker扩展目前支持调试Docker容器中的Node.js、Python和.NET核心应用程序
这里没有提到Java,但在另一个地方()他们清楚地谈到了Java应用程序:
例如,将其添加到.devcontainer/devcontainer.json将设置Java主路径:
“设置”:{“java.home”:“/docker java home”}
如果您像这样设置run命令
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 -jar App.jar
(或者不管你怎么称呼它,重要的是选项)
然后让docker容器暴露该端口。我通常使用docker compose文件来实现这一点,因此,如果像这样设置run命令,您可以在运行时轻松地映射您喜欢的端口
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 -jar App.jar
(或者不管你怎么称呼它,重要的是选项)
然后让docker容器暴露该端口。我通常使用docker compose文件来实现这一点,因此您可以轻松地在运行时以自己喜欢的方式映射端口将tar文件复制到容器中,然后使用启动命令将其解压script@Ashok这如何帮助我调试应用程序?基本上,您的要求是希望在容器中执行java?将tar文件复制到容器中,然后使用启动命令将其解压script@Ashok这对我调试应用程序有什么帮助?基本上,你的要求是要在容器中执行java?是的,我的设置就是这样的(我更新了我的问题)。但是我如何才能将VSCode Java调试器附加到该JVM?哦,好的,有一个支持附加的扩展名“debugger for Java”。我该如何做?左键单击插件工具栏(看起来像拼图),然后搜索它。是的,这正是我的设置方式(我更新了我的问题)。但是我怎样才能将VSCode Java调试器附加到那个JVM上呢?哦,好的,有一个扩展“debugger for Java”支持附加。我该怎么做呢?左键单击插件工具栏(看起来像拼图),然后搜索它。