从IntelliJ IDEA远程调试Docker容器中的Java 9

时间:2017-10-10 08:35:47

标签: java debugging docker docker-compose remote-debugging

我有一个包含此内容的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"

当我 docker-composer up 时,我看到一条消息" 在地址:5005 "收听传输dt_socket。但是当我尝试连接jdb或者想法时,我得到" java.io.IOException:握手失败 - 连接先关闭"。

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

1 个答案:

答案 0 :(得分:22)

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

因此,要从外部启用调试连接,请将*:<port>指定为地址:

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