web-dev-qa-db-fra.com

Comment déboguer une application s'exécutant dans Docker avec IntelliJ?

J'ai une application Jetty en cours d'exécution dans docker. Je voudrais déboguer cette application en utilisant mon IntelliJ local. Je suis sur v 14.1, donc j'ai installé le plugin d'intégration Docker.

Sous Clouds, j'utilise les valeurs par défaut qui apparaissent lorsque je clique sur le "+". La documentation IntelliJ dit que cela devrait aller. Ici le 

API URL: http://127.0.0.1:2376
Certificates folder: <empty>

Je ne suis pas sûr de savoir à quoi ils servent, alors je ne sais pas si ces valeurs sont exactes.

Sous Configurations Exécuter/Déboguer, j'utilise Docker Deployment et les valeurs suivantes:

Deployment: Docker Image
Image ID: The docker image ID 
Container name: The name of the container

Quand j'essaye de courir ceci, j'obtiens javax.ws.rs.ProcessingException: org.Apache.http.conn.HttpHostConnectException: connexion à http://127.0.0.1:2376 [/127.0.0.1] a échoué: connexion refusée

De toute évidence, la valeur de l'URL de l'API que j'utilise est incorrecte. Des suggestions sur ce que cette valeur devrait être?

Mes options de débogage sont les suivantes: 

 -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n -Djava.compiler=NONE
15
Somaiah Kumbera

Sheesh Peu importe. Je n'ai pas vraiment besoin du plugin d'intégration Docker. On dirait que c'est plus pour le déploiement et la gestion de Docker directement via Intellij que pour le débogage.

Pour déboguer mon application Jetty s'exécutant dans mon conteneur Docker, j'ai simplement débogué à distance:

Run | Editer les configurations | + | Éloigné

Les arguments de la ligne de commande étaient déjà acceptables, car j’utilisais les options de débogage distant par défaut. Je n'avais besoin que de changer les paramètres de l'hôte. Ici, j'ai utilisé le nom d'hôte que j'avais défini dans le conteneur de menu fixe

19
Somaiah Kumbera

Dans Java 8, le JDK prend en charge une variable d’environnement Java_TOOL_OPTIONS. Pour activer le débogueur pour toute application Java, vous pouvez ajouter les paramètres suivants à votre commande docker run:

-p 8000:8000 -e "Java_TOOL_OPTIONS=\"-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n\""

Ensuite, démarrez une session de débogage à distance se connectant à localhost: 8000.

1
Nathan Niesen

Si quelqu'un veut faire du développement sur une machine Windows et exécuter/déboguer une application simultanément sur un menu fixe distant, vous pouvez consulter mon plugin intellij ici: https://bojanv55.wordpress.com/2018/08/03/intellij -idea-remote-debug-of-Java-code-inside-docker-container/

0
bojanv55