本トピックでは、Windows 用の Visual COBOL ビルド ツール ベース イメージを実行し、アプリケーションのクラスおよびデバッグ ファイルのボリュームのマウントを行うことで、アプリケーションをデバッグできるようにする方法について説明します。
注:
本トピックは、コンテナーで JVM COBOL アプリケーションを使用する場合にのみ該当します。コンテナーでネイティブ COBOL アプリケーションを使用するには、「コンテナーでのネイティブ COBOL アプリケーションのデバッグおよび実行」に記載の機能を使用する必要があります。
コンテナーを実行する際は、docker run コマンドで通常指定するパラメーターに加えて次のものを指定する必要があります。
- コンテナーのデフォルトのコマンドを上書きするリモート デバッグ オプションを指定した java コマンド。これにより、コンテナーの実行時に、リモート デバッグを有効にするために必要なプロセスが開始されるようになります。
- コンテナーがリッスンするポート。コンテナーで DHCP または TCP トンネリングを使用する場合は、イメージの作成時に使用した Dockerfile で EXPOSE コマンドを使用してポートが指定されている必要があります。
たとえば、コンテナー デモンストレーションとして提供されている 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_8.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_8.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