Som*_*era 24 java remote-debugging intellij-idea docker
我有一个在docker中运行的Jetty应用程序.我想使用我的本地IntelliJ调试此应用程序.我在v 14.1上,所以我安装了Docker Integration插件.
在Clouds下,我使用的是当我点击'+'时显示的默认值.IntelliJ文档说这应该没问题.在这里
API URL: http://127.0.0.1:2376
Certificates folder: <empty>
Run Code Online (Sandbox Code Playgroud)
我不确定这些用途是什么,所以我不知道这些值是否正确.
在运行/调试配置下,我使用的是Docker Deployment,以及以下值:
Deployment: Docker Image
Image ID: The docker image ID
Container name: The name of the container
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时,我得到javax.ws.rs.ProcessingException:org.apache.http.conn.HttpHostConnectException:连接到http://127.0.0.1:2376 [/127.0.0.1]失败:连接被拒绝
显然我使用的API URL值不正确.关于该值应该是什么的任何建议?
我的调试选项是:
-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n -Djava.compiler=NONE
Run Code Online (Sandbox Code Playgroud)
Som*_*era 24
Sheesh没关系.我真的不需要Docker Integration插件.这似乎更像是通过Intellij直接部署和管理Docker而不是调试.
要调试我的docker容器中运行的jetty应用程序,我只需远程调试:
运行| 编辑配置| + | 远程
由于我使用了默认的远程调试选项,因此命令行参数已经正常.我只需要更改主机设置.在这里,我使用了我在docker容器中设置的主机名
小智 11
运行 docker 镜像如下:
\ndocker run -d -p 8080:8080 -p 5005:5005 \\\n -e JAVA_TOOL_OPTIONS="-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n" \\\n imagename:tagname\nRun Code Online (Sandbox Code Playgroud)\n对于 java 11 及以上版本,请将 JAVA_TOOL_OPTIONS 替换为“-agentlib:jdwp=transport=dt_socket,address=*:5005,server=y,suspend=n”
\nIntellij配置步骤:
\n从菜单栏中单击run\xe2\x86\x92 Edit Configurations\xe2\x86\x92 在左侧面板中单击Remote\xe2\x86\x92 单击+符号以添加调试配置
添加新配置后,调试mode=Attach到远程 JVM。填写主机和端口号
选择要调试的模块类路径,然后应用设置
\n要连接,请从菜单中运行上述远程配置run。
在 Java 8 中,JDK 支持 JAVA_TOOL_OPTIONS 环境变量,因此要为任何 Java 应用程序启用调试器,您可以将以下参数添加到您的docker run命令中:
-p 8000:8000 -e "JAVA_TOOL_OPTIONS=\"-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n\""
Run Code Online (Sandbox Code Playgroud)
然后启动连接到 localhost:8000 的远程调试会话。