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