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.
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