しおしお

IntelliJ IDEAのことなんかを書いてます

Dockerコンテナ上で動いているJavaアプリケーションをIntelliJさんからデバッグしてみる

IntelliJ IDEA 2019.1 Release Candidate is Out! | IntelliJ IDEA Blogにあるように、 2019.1 からの新機能ですね。

Dockerfileの準備

デバッグ対象のアプリケーションをDockerで動かすためのDockerfileを作ります。
※docker-compose.ymlでもデバッグいけるみたいです。

とりあえず、デバッグできることだけを確認したいので、シンプルにこんな感じにしています。

FROM java:8

COPY build/libs/sample.jar .

CMD $JAVA_HOME/bin/java -jar sample.jar

実行構成の作成

  • 実行構成の追加からRemoteを選びます

f:id:sioiri:20190328085903p:plain

  • ポート番号やJavaのバージョンなどの設定を行います
    あとで必要になるので、Command line arguments for remote JVMの内容はコピーしておきましょう

f:id:sioiri:20190328090053p:plain

  • Before launchLaunch Docker before debugを選びます

f:id:sioiri:20190328090256p:plain

  • Launch Docker before debug の設定を行います
  • Custom Commandには、コピーしたCommand line arguments for remote JVMの内容を使ってリモートデバッグ可能な状態でアプリケーションを起動するようコマンドをを設定します((Custom Commandの設定、再度設定画面開くと消えちゃってますがおそらく設定自体は生きています))
  • 今回は、 java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar sample.jarと設定しています

f:id:sioiri:20190328090543p:plain

デバッグ実行してみる

こんな感じにコンテナ上で実行されているアプリケーションに対するデバッグが行なえます。 f:id:sioiri:20190328100035g:plain

・・・

Custom Command での上書き設定がちょっとめんどくさい感じですね