web-dev-qa-db-fra.com

Débogage à distance Java 9 dans un conteneur Docker d'IntelliJ IDEA

J'ai un Dockerfile avec ce contenu:

FROM openjdk:9

WORKDIR /project

ADD . /project

EXPOSE 5005

Mon docker-compose.yml ressemble à ceci:

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"

Quand je fais docker-composer up je vois un message " Ecoute pour le transport dt_socket à l'adresse: 5005 ". Mais lorsque j'essaie de me connecter avec jdb ou Idea, j'obtiens " Java.io.IOException: échec de la prise de contact - connexion prématurément fermée ".

Tout fonctionne bien si je change openjdk: 9 en openjdk: 8. Cependant, j'ai besoin de Java 9 pour mon projet.

15
Iurii Drozdov

De Java 9, le connecteur de socket JDWP accepte uniquement les connexions locales par défaut. Voir: http://www.Oracle.com/technetwork/Java/javase/9-notes- 3745703.html # JDK-8041435

Donc, pour activer les connexions de débogage de l'extérieur, spécifiez *:<port> comme adresse:

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

39
Jorrit Posthuma