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

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

注: This topic does not apply if you are using Enterprise Developer UNIX Components.
注: This topic only applies to using JVM COBOL applications in containers. To use native COBOL applications in containers you need to use the functionality described in コンテナーでのネイティブ COBOL アプリケーションのデバッグおよび実行.

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

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

Windows:
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_9.0_x64 
 java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 com.microfocus.example.Program1
UNIX:
docker run  -p 8000 --rm
--cap-add=SYS_PTRACE 
--name helloworld-x64-debug 
-v /home/user/workspace/simpleproj/New_Configuration.bin:/home/root_docker/app 
--workdir /home/root_docker/app 
-it microfocus/vcdevhub:rhel7_8.0_x64_pu1_login
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 コンテナー内部のデバッグを許可します。UNIX のみ。
-v %CD%\bin:c:\app
ローカル フォルダー %CD%\bin をコンテナー内のフォルダー c:\app にマウントします。%CD% は現在のディレクトリを表します。Windows のみ。
-v /home/user/workspace/simpleproj/New_Configuration.bin:/home/root_docker/app
ローカル フォルダー /home/user/workspace/simpleproj/New_Configuration.bin をコンテナー内のフォルダー /home/root_docker/app にマウントします。UNIX のみ。
--workdir c:\app
コンテナーの作業ディレクトリを設定します。-v パラメーターで指定したフォルダーと同じにする必要があります。Windows のみ。
--workdir /home/root_docker/app
コンテナーの作業ディレクトリを設定します。-v パラメーターで指定したフォルダーと同じにする必要があります。UNIX のみ。
-it
コンテナーを対話的に実行するように指定します。
microfocus/edbuildtools:win_9.0_x64
実行するイメージの名前を指定します。この例では、64 ビット Windows 版の Enterprise Developer Build Tools for Windows イメージを指定しています。Windows のみ。
microfocus/vcdevhub:rhel7_5.0_x64_pu10_login
実行するイメージの名前を指定します。UNIX のみ。
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