はじめに
この記事ではDockerなどのコンテナ環境で実行されているJVMベースのアプリケーション(Java, Kotlin, Scalaなど)をデバッグする方法について解説します。
前提条件
- Docker/Docker Composeがインストールされていること
- Java対応IDE(IntelliJ IDEA, Eclipse, VS Codeなど)がインストールされていること
- JVMベースの言語(Java, Kotlin, Scala等)で作成されたプロジェクトが存在すること
デバッグ環境の設定方法
1. Docker環境の準備
docker-compose.ymlの設定
デバッグを可能にするには、JVMのデバッグポートを公開し、デバッグオプションを環境変数として設定する必要があります。
version: '3'
services:
app:
build: .
ports:
- "8080:8080" # アプリケーションポート
- "5005:5005" # デバッグポート
environment:
- JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
2. IDEの設定
IntelliJ IDEAの場合
- メニューから「実行」→「実行構成の編集」を選択
- 「+」ボタンをクリックし、「リモートJVMデバッグ」を選択
- 以下の項目を設定:
- 名前: 任意のデバッグ設定名(例:「Docker Debug」)
- ホスト: localhost
- ポート: 5005
- 使用するモジュールのクラスパス: デバッグ対象のプロジェクトモジュール
VS Codeの場合
launch.json
に以下の設定を追加:
{
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Docker Debug",
"request": "attach",
"hostName": "localhost",
"port": 5005
}
]
}
3. リモートデバッグの開始
上記で設定した実行構成でリモートデバッグを開始すると、デバッグが可能になります。
プロダクション環境では、デバッグポートを公開しないでください
まとめ
この記事では、Docker環境で実行されているJVMアプリケーションのデバッグ方法について説明しました。適切な設定を行うことで、通常の開発環境と同様にステップ実行やブレークポイントを利用したデバッグが可能になります。
この方法は、Java、Kotlin、Scalaなど、JVM上で動作する全ての言語に適用可能です。フレームワークの選択(Spring Boot、Micronaut、Quarkus、Play Frameworkなど)に関係なく、同じ方法でデバッグを行うことができます。