IntelliJ IDEA 2026.1 Help

Tomcat を実行しているコンテナー内で Java Web アプリケーションをデプロイしてデバッグする

Docker コンテナーを使用して、Java Web アプリケーションをデプロイおよびデバッグするためのアプリケーションサーバーを実行できます。 これは、さまざまな環境を再現するさまざまなバージョンのアプリケーションサーバーで Web アプリケーションをテストおよびデバッグするための優れた方法です。

このチュートリアルでは、Docker Compose ファイルを使用して Docker コンテナーを実行し、Tomcat アプリケーションサーバーにデプロイされた Web アプリケーションと、デバッグに必要なすべての設定 (デバッガーポートの公開、コンテナー内の Tomcat への WAR ファイルの出力ディレクトリのバインドマウント、およびデバッガーソケットのオープン) を行う方法を説明します。

サンプルプロジェクトのクローンを作成する

アプリケーションのソースコードは https://github.com/IdeaUJetBrains/Tomcat_docker_debug の GitHub でホストされています

  1. メインメニューで ファイル(F) | 新規(N) | バージョン管理からプロジェクト… へ移動します。

  2. リポジトリの URL を指定して、 クローン をクリックします。

  3. 必要に応じて、クローンプロジェクトを新しいウィンドウで開くことに同意します。

サンプルプロジェクトを使用してリポジトリを複製する

WAR アーティファクトをビルドする

  1. メインメニューで ビルド(B) | アーティファクトのビルド… に移動します

  2. tomcat_docker_debug:war が展開しました を選択してビルドします。

WAR アーティファクトをビルドする

ビルドされたアーティファクトは、 target/ のプロジェクトルートに表示されます。

Docker Compose を使用してアプリケーションを実行する

  1. docker-compose.yml を開きます。

  2. services の横のガターで docker compose up をクリックします。

これにより、 docker-compose.yml で定義された別の Docker Compose サービスとしてコンテナー内のアプリケーションを実行する Docker Compose 実行構成が作成されます。

イメージ

このチュートリアルでは、 tomcat:10.0-jdk17 イメージを使用する。これは Jakarta EE 9.1 と互換性がある。 アプリケーションが Jakarta EE 10 を使用する場合は、Tomcat 10.1 で実行する。 Java EE 8 の場合は、Tomcat 9 およびそれ以前のバージョンを使用する。

ポート

ホストマシンからアプリケーションへアクセスするには、Docker Compose がコンテナー内のポート 8080 をホスト側のポート 8888 に公開する。 また、デバッガー用にコンテナー内のポート 5005 をホスト側のポート 5005 に公開する。

ボリューム

WAR アーティファクトをコンテナーにコピーする代わりに、Docker Compose はアプリケーションの出力ディレクトリ ./target をコンテナー内の Tomcat ディレクトリ /usr/local/tomcat/webapps にバインドマウントする。

環境変数

デバッガーを接続するために、Docker Compose は JAVA_OPTS 環境変数を次のように設定する。

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
コマンド

Docker Compose は Tomcat イメージで宣言されているデフォルトのコマンドをオーバーライドし、 catalina.sh run に設定する。

アプリケーションが実行されていることを確認する

  1. コンテナーログを開き、Tomcat が開始したというメッセージで終了していることを確認します。

  2. ブラウザーで次の URL を開きます: http://localhost:8888/Tomcat_docker_debug-1.0-SNAPSHOT/api/hello-worldHello, World! を含むページを返す必要があります

Hello, World! Java Web アプリケーションからの応答

デバッガーをアタッチする

  1. デバッガーをリモート接続する remote_tomcat_debug という名前の リモートJVM デバッグ 構成を実行します。

  2. src/main/java/com/example/tomcat_docker_debug/HelloResource.java を開き、 return "Hello, World!"; のある行の hello() メソッドにブレークポイントを設定します。

    エンドポイントにブレークポイントを設定する
  3. RESTエンドポイントを再度リフレッシュするか、開きます: http://localhost:8888/Tomcat_docker_debug-1.0-SNAPSHOT/api/hello-world. 今回は、前述のメソッド内のブレークポイントにヒットするはずです。

2026 年 3 月 30 日