web-dev-qa-db-ja.com

IntelliJを使用してDockerで実行中のアプリケーションをデバッグする方法は?

DockerでJettyアプリケーションを実行しています。ローカルIntelliJを使用してこのアプリケーションをデバッグしたいと思います。私はv 14.1にいるので、Docker Integrationプラグインをインストールしました。

クラウドでは、「+」をクリックすると表示されるデフォルト値を使用しています。 IntelliJのドキュメントでは、これで問題ないはずです。ここに

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

これらが何に使われるのか分かりませんので、これらの値が正しいかどうかはわかりません。

[実行/デバッグ構成]で、Docker Deploymentと次の値を使用しています。

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

これを実行しようとすると、javax.ws.rs.ProcessingException:org.Apache.http.conn.HttpHostConnectException:Connect to http://127.0.0.1:2376 [/127.0.0.1 ]失敗:接続が拒否されました

明らかに、私が使用しているAPI URL値は正しくありません。その価値がどうあるべきかについての提案はありますか?

私のデバッグオプションは次のとおりです。

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

Sheesh気にしないで。 Docker Integrationプラグインは本当に必要ありませんでした。デバッグよりも、Intellijを介して直接Dockerを展開および管理する方がそのように思えます。

Dockerコンテナー内で実行されているjettyアプリをデバッグするには、単にリモートデバッグしました。

実行|構成の編集| + |リモート

デフォルトのリモートデバッグオプションを使用したため、コマンドライン引数はすでに問題ありませんでした。ホストの設定を変更するだけで済みました。ここでは、Dockerコンテナ内で設定したホスト名を使用しました

24
Somaiah Kumbera

Java 8では、JDKはJava_TOOL_OPTIONS環境変数をサポートするため、任意のJavaアプリケーションでデバッガを有効にするには、次のパラメータをdocker runコマンド:

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

次に、localhost:8000に接続するリモートデバッグセッションを開始します。

3
Nathan Niesen

誰かがWindowsマシンで開発を行い、同時にリモートドッカーでアプリを実行/デバッグしたい場合は、ここで私のintellijプラグインを確認できます: https://bojanv55.wordpress.com/2018/08/03/intellij-idea-remote-debug-of-Java-code-inside-docker-container /

0
Bojan Vukasovic