从IntelliJ IDEA远程debuggingDocker容器中的Java 9

我有一个Dockerfile与这个内容:

FROM openjdk:9 WORKDIR /project ADD . /project EXPOSE 5005 

我的docker-compose.yml如下所示:

 version: "3.2" services: some-project: build: . ports: - target: 5005 published: 5005 protocol: tcp mode: host command: "java '-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005' SomeClass" 

当我做dockercomposer php时,我看到一条消息:“ 收听地址:5005处的dt_socket传输 ”。 但是当我尝试连接jdb或者Idea的时候,我得到了“ java.io.IOException:handshake failed – 连接在closures状态 ”。

一切正常,如果我改变openjdk:9openjdk:8 。 但是,我的项目需要Java 9。

从Java 9开始,JDWP套接字连接器默认只接受本地连接。 请参阅: http : //www.oracle.com/technetwork/java/javase/9​​-note-3745703.html#JDK-8041435

因此,要启用外部的debugging连接,请指定*:<port>作为地址:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005

这不是一个答案只是一个确认。 其实这几乎是我们如何做到的:

  • ports: <someport>:5005
  • -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
  • 在IDE中用远程debugging器连接到<someport>