しおしお

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

Skaffoldで起動したSpring BootなアプリケーションをIntelliJ IDEAでデバッグする

Skaffoldで起動したSpring BootをIntelliJ IDEAでデバッグする方法を調べてみました。1

デバッグモードでアプリケーションをデプロイする

skaffold debugコマンドを使用して、アプリケーションをデプロイします。 debugコマンドを使ってデプロイすることで、ドキュメントに記載があるようにリモートでのデバッグが可能となります。 Javaのアプリケーションについては、ドキュメントに記載があるようにJDWPエージェントが有効化されるようです。

SkaffoldのConfigファイルをデフォルトのSkaffold.ymlで作っている場合には、以下のコマンドを実行するだけとなります。

skaffold debug --port-forward

IntelliJ IDEAへデバッグ設定を追加

下の画像のように、実行構成からRemote JVM Debugを追加します。 デフォルトの設定で、skaffold debugコマンドで有効化されたJDWPエージェントに接続されるので実行構成は特に変更しなくても問題ありません。 f:id:sioiri:20211219181610p:plain:w800

リモートデバッグをしてみる

下の動画のようにSkaffoldでデプロイしたアプリケーションに対してIntelliJ IDEAからリモートデバッグが可能となります。 f:id:sioiri:20211219182208g:plain

注意点

skaffold devコマンドと異なり、ファイルの変更監視や変更を検知しての自動デプロイはデフォルトでは無効化されています。 devコマンドと同じように、デバッグ中に変更検知と自動デプロイを使いたい場合には、下のようにauto系のオプションを追加してdebugコマンドを実行ます。

ただし、自動デプロイが行われるリモートデバッグの接続が切れるため、再度デバッグしたい場合にはRemote JVM Debug`を再実行する必要があります。

skaffold debug --port-forward --auto-build --auto-deploy --auto-sync

おわり。


  1. Spring Boot以外でもJavaなアプリケーションであれば方法でデバッグできます。