本トピックでは、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 コマンドで通常指定するパラメーターに加えて次のものを指定する必要があります。
- コンテナーのデフォルトのコマンドを上書きするリモート デバッグ オプションを指定した java コマンド。これにより、コンテナーの実行時に、リモート デバッグを有効にするために必要なプロセスが開始されるようになります。
- コンテナーがリッスンするポート。コンテナーで DHCP または TCP トンネリングを使用する場合は、イメージの作成時に使用した Dockerfile で EXPOSE コマンドを使用してポートが指定されている必要があります。
たとえば、コンテナー デモンストレーションとして提供されている 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