docker容器内远程调试运行进程

Posted

技术标签:

【中文标题】docker容器内远程调试运行进程【英文标题】:Remote debugging running process inside docker container 【发布时间】:2016-04-06 16:30:08 【问题描述】:

我在 Docker 容器内运行 node.js 应用程序。我需要使用Intellij Ultimate 15 调试此应用程序。

demoapp:
  build: .
  command: 'bash -c "npm install && npm run debug"'
  ports:
    - "8989:8989"
  environment:
      VIRTUAL_HOST: 'demoapp.docker'
      VIRTUAL_PORT: 8989

来自package.jsondebug 脚本

"debug": "(node-inspector --web-port=8989  app.js &) && node --debug app.js"

以及IDE中的配置

IDE 以 Frame is not available 响应。估计连不上

我做错了吗?

此外,我可以使用Chrome 进行调试。如果我访问demoapp.docker:8989,它会连接,我可以开始调试。

【问题讨论】:

【参考方案1】:

您应该通过 IntelliJ 调试器连接到调试端口,而不是 Web 端口。因此,您应该在节点运行时指定它(使用 --debug 选项)并将其公开给 docker 主机,然后您就可以连接到它。

JetBrains 文档中的更多信息:https://www.jetbrains.com/idea/help/running-and-debugging-node-js.html#remote_debugging

【讨论】:

以上是关于docker容器内远程调试运行进程的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 容器中运行 Visual Studio 远程调试器(由 Docker 管理)

Docker容器中的Intellij CE 2018.2 + SBT:远程调试断点无法正常工作

将 Eclipse 连接到 Docker 容器以进行远程调试

如何检查一个进程是不是在 docker 容器内运行?

VsCode远程调试,更改pythonpath指向docker容器的python解释器

无法在 docker 容器中远程调试 Java 9 Tomcat 9