デバッグ対象のコンテナーの実行

本トピックでは、Windows 用の Enterprise Developer ビルド ツール ベース イメージを実行し、アプリケーションのクラスおよびデバッグ ファイルのボリュームのマウントを行うことで、アプリケーションをデバッグできるようにする方法について説明します。

注: 本トピックは、Enterprise Developer UNIX コンポーネントを使用している場合には該当しません。
注: 本トピックは、コンテナーで JVM COBOL アプリケーションを使用する場合にのみ該当します。コンテナーでネイティブ COBOL アプリケーションを使用するには、「コンテナーでのネイティブ COBOL アプリケーションのデバッグおよび実行」に記載の機能を使用する必要があります。

コンテナーを実行する際は、docker run または podman run コマンドで通常指定するパラメーターに加えて次のものを指定する必要があります。

たとえば、コンテナー デモンストレーションとして提供されている JVM COBOL の Hello World プロジェクトを実行する場合の docker run コマンドの例を次に示します。

docker run -p 8000 --rm 
 --name helloworld-x64-debug 
 --cap-add=SYS_PTRACE
 -v %CD%\bin:c:\app 
 --workdir c:\app 
 -it microfocus/edbuildtools:win_6.0_x64 
 java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 com.microfocus.example.Program1

上記の docker run コマンドで指定しているパラメーターは次のとおりです。

-p 8000
ポート番号 8000 をパブリッシュします。
--rm
実行の終了時に自動的にコンテナーを削除するように指定します。
--name helloworld-x64-debug
コンテナーで使用する名前を指定します。
--cap-add=SYS_PTRACE
Linux コンテナー内部のデバッグを有効にします。
-v %CD%\bin:c:\app
ローカル フォルダー %CD%\bin をコンテナー内のフォルダー c:\app にマウントします。%CD% は現在のディレクトリを表します。
--workdir c:\app
コンテナーの作業ディレクトリを設定します。-v パラメーターで指定したフォルダーと同じにする必要があります。

-it
コンテナーを対話的に実行するように指定します。
microfocus/edbuildtools:win_6.0_x64
実行するイメージの名前を指定します。この例では、64 ビット Windows 版の Enterprise Developer Build Tools for Windows イメージを指定しています。
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 com.microfocus.example.Program1
ポート 8000 でクラス com.microfocus.example.Program1 のリモート デバッグを有効にする java コマンドを指定します。

コンテナーの実行時、コンテナーが実行されていて Java ランタイムのデバッグ用の接続を準備していることを示す次のようなメッセージが表示されます。

Listening for transport dt_socket at address: 8000