Visual COBOL ベース イメージの Docker デモンストレーションの Dockerfile.nojava ファイル

本トピックには、Visual COBOL ベース イメージの Docker デモンストレーションの Dockerfile.nojava ファイルのリストおよび説明が含まれています。Dockerfile 全体をリストし、Dockerfile に含まれる各コマンドの説明をその後の表にまとめてあります。Dockerfile のリストに示してある行番号は、読みやすくするために追加したものです。付属の Dockerfile には記載されていません。

001  # Copyright (C) Micro Focus 2018. All rights reserved. 
002  
003  ARG BASE_SUFFIX=
004  FROM microsoft/dotnet-framework${BASE_SUFFIX}
005  
006  # PRODUCT_VERSION is product version associated with this Dockerfile
007  # MFLICFILE is the build-arg for the license filename
008  # ACCEPT_CONTAINER_EULA is the build-arg for the accepting the end user license argument
009  # SETUP_EXE is the build-arg name for installer exe to be used
010  # TOOLS_LOC is build-arg name for installation location of the tools
011  ARG PRODUCT_VERSION=a.b.cc
012  ARG MFLICFILE
013  ARG ACCEPT_CONTAINER_EULA=no
014  ARG SETUP_EXE=vcbt_40.exe
015  ARG TOOLS_LOC=c:\\VCTools
016  ARG TMP_INST_DIR=c:\\vc40tmp
017  
018  LABEL vendor="Micro Focus" \
019        com.microfocus.name="Visual COBOL" \
020        com.microfocus.version="$PRODUCT_VERSION" \
021        com.microfocus.eula.url="https://supportline.microfocus.com/licensing/agreements.aspx" \
022        com.microfocus.is-base-image="true" \
023  
024  # transfer build arguments to environment vars
025  ENV TOOLS_LOC=${TOOLS_LOC} \
026      RMT_DIR="C:\\Program Files (x86)\\Common Files\\SafeNet Sentinel\\Sentinel RMS License Manager\\WinNT"
027  
028  # Use cmd.exe, the microsoft/dotnet-framework-build changes this to powershell, so we need to reset
029  SHELL ["cmd", "/S", "/C"]
030  
031  # Copy the setup .exe and license to the image
032  COPY ${SETUP_EXE} "${TMP_INST_DIR}\\"
033  COPY ${MFLICFILE} "${TOOLS_LOC}\\"
034  
035  # Do the actual installation
036  RUN set TMP_INST_DIR=${TMP_INST_DIR} && \
037      set SETUP_EXE=${SETUP_EXE} && \
038      set ACCEPT_CONTAINER_EULA=${ACCEPT_CONTAINER_EULA} && \
039      cd %TMP_INST_DIR% && start "" /wait %SETUP_EXE% /q "InstallFolder=%TOOLS_LOC%" /l log.txt accepteula=%ACCEPT_CONTAINER_EULA%
040  
041  # Check log.txt
042  RUN cd %TMP_INST_DIR% && \
043      findstr /ic:"Exit Code: 0x0" log.txt || (echo "Install failed - error messages in log.txt" && findstr /ic:"error" log.txt && findstr /ic:"Exit Code:" log.txt && exit 1)
044  
045  # License the image
046  RUN set TOOLS_LOC=${TOOLS_LOC} && \
047      set MFLICFILE=${MFLICFILE} && \
048      cd %TOOLS_LOC% && \
049      "%RMT_DIR%\\MFLicenseAdmin.exe" -install %MFLICFILE%
050  
051  # Cleaup directory
052  RUN set TMP_INST_DIR=${TMP_INST_DIR} && \
053      cd \ && rmdir /S /Q %TMP_INST_DIR%
054  
055  # set the default directory to tools directory
056  WORKDIR "${TOOLS_LOC}"

この Dockerfile の各行のコマンドは次のとおりです。

説明
003 - 004 Windows Server 2016 Server Core 上の .NET Framework の公式 Docker イメージをベース イメージとして使用するように指定します。
011 - 016 docker build コマンドで渡すビルド引数を定義します。
  • PRODUCT_VERSION。この Dockerfile が付属する Visual COBOL のバージョンを示します。
  • MFLICFILE。Visual COBOL に使用するライセンス ファイルの名前を指定します。
  • ACCEPT_CONTAINER_EULA。使用許諾契約書の内容に同意することを示します。デフォルトの設定は「no」です。したがって、使用許諾契約書の内容に同意することを示すには変更する必要があります。
  • SETUP_EXE。Visual COBOL のインストール ファイルの名前を指定します。デフォルトの設定は、Visual COBOL に付属のファイルの名前です。
  • TOOLS_LOC。Visual COBOL のインストール先フォルダーを指定します。
  • TMP_INST_DIR。イメージの作成中に使用する一時ディレクトリを指定します。不要になったら削除されます。
注: Dockerfile.nojava では、Dockerfile と違って、引数 JAVATARFILE および JAVAHOMEDIR を定義する必要はありません。
018 - 022 作成するイメージのメタデータ ラベルを指定します。これらのラベルは docker inspect コマンドで照会できます。
注: Dockerfile.nojava では、Dockerfile と違って、com.microfocus.third_parties.java のエントリを含める必要はありません。
025 - 026 この Dockerfile で使用する環境変数を作成します。
  • TOOLS_LOC は、前に定義したビルド引数からコピーされます。
  • RMT_DIR は、COBOL ライセンス管理ソフトウェアの場所を指定します。これは、Visual COBOL のインストール時にインストールされます。
注: Dockerfile.nojava では、Dockerfile と違って、引数 JAVA_PKG および JAVA_HOME を定義する必要はありません。
029 後続の命令に使用するシェルとして ["cmd", "/S", "/C"] を指定します。

これは Windows 上の Dockerfile のデフォルトですが、ここで明示的に指定する必要があります。この Docker ファイルのベース イメージは Microsoft .NET Framework 「-build」イメージであり、このイメージを使用すると PowerShell がシェルとして使用されるからです。

032 - 033 Visual COBOL のインストール ファイルを一時フォルダーにコピーし、Visual COBOL のライセンス ファイルを Visual COBOL のインストール先フォルダーにコピーします。
036 - 039 Visual COBOL のインストール ファイルを実行します。パラメーターで、サイレント インストールの実行、インストール先のディレクトリ、ログ ファイルの作成、使用許諾契約書の内容への同意を指定します。
042 - 043 連結された一連の Windows コマンドを実行して、Visual COBOL のインストール ログ ファイルでインストールの失敗を示すテキストを検索します。そのようなテキストが見つかった場合、それ以上の処理は行われません。
046 - 049 連結された一連の Windows コマンドを実行して、Visual COBOL のライセンスを有効にします。
052 - 053 連結された一連の Windows コマンドを実行して、Visual COBOL のインストール ファイルと、それを格納するために使用された一時ディレクトリを削除します。
056 Docker の作業ディレクトリを Visual COBOL のインストール先ディレクトリに設定します。