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

This topic lists and describes the Dockerfile file from the Docker demonstration for the Visual COBOL base image.Dockerfile 全体をリストし、Dockerfile に含まれる各コマンドの説明をその後の表にまとめてあります。Dockerfile のリストに示してある行番号は、読みやすくするために追加したものです。付属の Dockerfile には記載されていません。

001  # Copyright (C) Micro Focus 2018. All rights reserved. 
002  
003  ARG BASE_SUFFIX=
004  ARG BASE_TAG=latest
005  FROM microsoft/dotnet-framework${BASE_SUFFIX}:${BASE_TAG}
006  
007  # PRODUCT_VERSION is product version associated with this Dockerfile
008  # MFLICFILE is the build-arg for the license filename
009  # ACCEPT_CONTAINER_EULA is the build-arg for the acceptance of the end user license argument
010  # SETUP_EXE is the build-arg name for installer exe to be used
011  # TOOLS_LOC is build-arg name for installation location of the tools
012  # JAVAZIPFILE is the build-arg name for on-disk file that contains the oracle server jre
013  # JAVAHOMEDIR is the build-arg name for location of the java installation
014  ARG PRODUCT_VERSION=4.0.00266
015  ARG MFLICFILE
016  ARG ACCEPT_CONTAINER_EULA=no
017  ARG SETUP_EXE=vcbt_40.exe
018  ARG TOOLS_LOC=c:\\VCTools
019  ARG JAVAZIPFILE=
020  ARG TMP_INST_DIR=c:\\vctmp
021  
022  LABEL vendor="Micro Focus" \
023        com.microfocus.name="Visual COBOL" \
024        com.microfocus.version="$PRODUCT_VERSION" \
025        com.microfocus.eula.url="https://supportline.microfocus.com/licensing/agreements.aspx" \
026        com.microfocus.is-base-image="true" \
027        com.microfocus.third_parties.java="openjdk"
028  
029  # transfer build arguments to environment vars
030  ENV TOOLS_LOC=${TOOLS_LOC} \
031      RMT_DIR="C:\\Program Files (x86)\\Common Files\\SafeNet Sentinel\\Sentinel RMS License Manager\\WinNT"
032  
033  # Use cmd.exe, the microsoft/dotnet-framework-build changes this to powershell, so we need to reset
034  SHELL ["cmd", "/S", "/C"]
035  
036  # Copy the setup .exe and license to the image
037  COPY ${SETUP_EXE} "${TMP_INST_DIR}\\"
038  COPY ${MFLICFILE} "${TOOLS_LOC}\\"
039  
040  # Do the actual installation
041  WORKDIR "${TMP_INST_DIR}"
042  RUN set TMP_INST_DIR=${TMP_INST_DIR} && \
043      set SETUP_EXE=${SETUP_EXE} && \
044      set ACCEPT_CONTAINER_EULA=${ACCEPT_CONTAINER_EULA} && \
045      cd %TMP_INST_DIR% && start "" /wait %SETUP_EXE% /q "InstallFolder=%TOOLS_LOC%" /l log.txt accepteula=%ACCEPT_CONTAINER_EULA%
046  
047  # Check log.txt
048  RUN cd %TMP_INST_DIR% && \
049      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)
050  
051  # License the image
052  RUN set TOOLS_LOC=${TOOLS_LOC} && \
053      set MFLICFILE=${MFLICFILE} && \
054      cd %TOOLS_LOC% && \
055      "%RMT_DIR%\\MFLicenseAdmin.exe" -install %MFLICFILE%
056  
057  # Copy java .tar.gz and setup PATH
058  COPY getAdoptOpenJDK.ps1 /
059  COPY ${JAVAZIPFILE} /
060  RUN cd / && \
061      powershell -command .\getAdoptOpenJDK.ps1 -download $False -unzip $True -CreateSetXBat $true && \
062      call env_setx.bat && \
063      set JAVAZIPFILE=${JAVAZIPFILE} && \
064      del \*.ps1 \*.zip
065  
066  # Setup ANT on PATH and ANT_HOME
067  RUN set TOOLS_LOC=${TOOLS_LOC} && \
068      setx /M PATH "%PATH%;%JAVA_HOME%\bin;%ANT_HOME%\bin" && \
069      setx /M ANT_HOME "%TOOLS_LOC%\ant"
070  
071  # Cleaup directory
072  RUN set TMP_INST_DIR=${TMP_INST_DIR} && \
073      cd \ && rmdir /S /Q %TMP_INST_DIR%
074  
075  # set the default directory to tools directory
076  WORKDIR "${TOOLS_LOC}"

The commands on the lines in this Dockerfile are as follows:

説明
003 から 005 Specifies that the base image to use is the official Docker image for .NET Framework on Windows Server 2016 Server Core.
014 から 020 docker build コマンドで渡すビルド引数を定義します。
  • PRODUCT_VERSION。この Dockerfile が付属する Visual COBOL のバージョンを示します。
  • MFLICFILE。Visual COBOL に使用するライセンス ファイルの名前を指定します。
  • ACCEPT_CONTAINER_EULA。使用許諾契約書の内容に同意することを示します。デフォルトの設定は「no」です。したがって、使用許諾契約書の内容に同意することを示すには変更する必要があります。
  • SETUP_EXE。 Specifies the name of the Visual COBOL installation file. The default setting is the name of the file supplied with Visual COBOL.
  • TOOLS_LOC。Specifies the folder into which Visual COBOL will be installed.
  • JAVAZIPFILE. Specifies the name of the installation file for OpenJDK from AdoptOpenJDK.
  • TMP_INST_DIR。イメージの作成中に使用する一時ディレクトリを指定します。不要になったら削除されます。
022 から 027 作成するイメージのメタデータ ラベルを指定します。これらのラベルは docker inspect コマンドで照会できます。
030 から 031 この Dockerfile で使用する環境変数を作成します。
  • TOOLS_LOC is copied from the build argument defined previously.
  • RMT_DIR specifies the location of the COBOL licensing management software. This is installed when you install Visual COBOL.
034 Specifies that the shell to be used for subsequent instructions is ["cmd", "/S", "/C"].

This is the default for Dockerfiles on Windows but needs to be specified explicitly here because the base image for this Dockerfile is a Microsoft .NET Framework "-build" image, and using that image causes PowerShell to be used as the shell.

037 から 038 Copies the Visual COBOL installation file into the temporary folder and the Visual COBOL license file into the folder where Visual COBOL is to be installed.
041 から 045 Run the Visual COBOL installation file specifying parameters to install it silently, into the required directory, creating a log file, and indicating that you have accepted the terms laid out in the license agreement.
048 から 049 Runs a series of concatenated Windows commands to search the Visual COBOL installation log file for text indicating that the installation failed. If any such text is found no further processing takes place.
052 から 055 Run a series of concatenated Windows commands to license Visual COBOL.
058 から 064 Copy the OpenJDK .zip file and the getAdoptOpenJDK.ps1 PowerShell script, then run a series of concatenated Windows comments to set up the Java environment and delete any files that are no longer required.
067 から 069 連結された一連の Windows コマンドを実行して、Ant のサポートを有効にします。
072 から 073 Runs a series of concatenated Windows commands to delete the Visual COBOL installation file and the temporary directory that was used to contain it.
076 Sets the Docker working directory to be the directory into which Visual COBOL was installed.