本トピックでは、Windows 用の Visual COBOL ビルド ツール ベース イメージを実行し、アプリケーションの実行可能ファイルおよびデバッグ ファイルのボリュームのマウントを行うことで、アプリケーションをデバッグできるようにする方法について説明します。
コンテナーを実行する際は、docker run コマンドで通常指定するパラメーターに加えて次のものを指定する必要があります。
- デバッグ対象のアプリケーションがネイティブ COBOL アプリケーションの場合は、コンテナーのデフォルトのエントリ ポイントを上書きするエントリ ポイント cobdebugremote (32 ビット システムの場合) または cobdebugremote64 (64 ビット システムの場合)。これにより、コンテナーの実行時に、デバッグ対象のアプリケーションのエントリ ポイントではなく、リモート デバッグを有効にするために必要なプロセスが開始されるようになります。
- コンテナーがリッスンするポート。これは、イメージの作成時に使用した Dockerfile で EXPOSE コマンドを使用して指定されている必要があります。
たとえば、64 ビット Windows プラットフォーム用のイメージに組み込まれているネイティブ COBOL の Hello World Docker デモンストレーションを実行する場合の docker run コマンドの例を次に示します。
docker run -p 6100 --rm
--name helloworld-x64-debug
-v %CD%\src\bin\x64\Debug:c:\app
--workdir c:\app
--entrypoint cobdebugremote64
-it microfocus/edbuildtools:win_4.0_x64
port=6100
上記の docker run コマンドで指定しているパラメーターは次のとおりです。
- -p 6100
- ポート番号 6100 をパブリッシュします。これは、イメージの作成時に使用した Dockerfile で EXPOSE コマンドを使用して指定されている必要があります。
- --rm
- 実行の終了時に Docker で自動的にコンテナーを削除するように指定します。
- --name helloworld-x64-debug
- コンテナーで使用する名前を指定します。
- -v %CD%\src\bin\x64\Debug:c:\app
- ローカル フォルダー %CD%\src\bin\x64\Debug をコンテナー内のフォルダー c:\app にマウントします。%CD% は現在のディレクトリを表し、docker run コマンドを Windows バッチ ファイルから実行する場合にのみ使用できます。コマンド ラインからコマンドを実行する場合は、PowerShell の自動変数 ${PWD} を使用するか、現在のディレクトリのフル パスを指定します。
- --workdir c:\app
- コンテナーの作業ディレクトリを設定します。-v パラメーターで指定したフォルダーと同じにする必要があります。
- --entrypoint cobdebugremote64
- リモート デバッグを有効にするために 64 ビットの cobdebugremote64 モジュールを指定します。これはネイティブ COBOL アプリケーションでのみ必要です。
- -it
- コンテナーを対話的に実行するように指定します。
- microfocus/edbuildtools:win_4.0_x64
- 実行するイメージの名前を指定します。この例では、64 ビット Windows 版の Enterprise Developer Build Tools for Windows イメージを指定しています。
- port=6100
- コンテナーのコマンド ライン パラメーターです。
コンテナーの実行時、実行中のアプリケーションがネイティブ COBOL である場合、コンテナーが実行されていて cobdebugremote (または cobdebugremote64) のデバッグ用の接続を準備していることを示す次のようなメッセージが表示されます。
Waiting for a connection on machine IP-address/container-name using port port-number.
Press 'Q' to quit.