The Dockerfile File in the Docker Demonstration for the Enterprise Test Server Base Image

This topic lists and describes the Dockerfile file from the Docker demonstration for the Enterprise Test Server base image. The Dockerfile is listed in its entirety and a following table describes the various Dockerfile commands. The line numbers in the listings of the Dockerfile have been added to aid readability. They are not present in the supplied Dockerfile.

001  # Copyright (C) Micro Focus 2018. All rights reserved. 
002  
003  FROM microsoft/dotnet-framework
004  
005  # PRODUCT_VERSION is product version associated with this Dockerfile
006  # ACCEPT_CONTAINER_EULA is the build-arg name for the accepting the end user license agreement
007  # ETSTSRV_EXE is the build-arg name name of installer to used
008  # ETSTSRV_LOC is the build-arg name for the installation location
009  # MFLICFILE is the build-arg name for the license filename
010  ARG PRODUCT_VERSION=4.0.00232
011  ARG ACCEPT_CONTAINER_EULA=no
012  ARG ETSTSRV_LOC=c:\\es
013  ARG TMP_INST_DIR=c:\\es40tmp
014  ARG ETSTSRV_EXE=ets_40.exe
015  ARG MFLICFILE
016  LABEL vendor="Micro Focus" \
017        com.microfocus.name="Enterprise Server Test" \
018        com.microfocus.version="$PRODUCT_VERSION" \
019        com.microfocus.eula.url="https://supportline.microfocus.com/licensing/agreements.aspx" \
020        com.microfocus.is-base-image="true"
021  
022  # transfer build arguments to environment vars
023  ENV RMT_DIR C:\\Program Files (x86)\\Common Files\\SafeNet Sentinel\\Sentinel RMS License Manager\\WinNT
024  ENV ETSTSRV_LOC=${ETSTSRV_LOC}
025  
026  WORKDIR "$TMP_INST_DIR"
027  COPY ${ETSTSRV_EXE} "${TMP_INST_DIR}\\"
028  RUN set ETSTSRV_EXE=${ETSTSRV_EXE} && \
029      set TMP_INST_DIR=${TMP_INST_DIR} && \
030      set ACCEPT_CONTAINER_EULA=${ACCEPT_CONTAINER_EULA} && \
031      mkdir %ETSTSRV_LOC% && \
032      cd %TMP_INST_DIR% && \
033      start "" /wait %ETSTSRV_EXE% /q "InstallFolder=%ETSTSRV_LOC%" /l log.txt accepteula=%ACCEPT_CONTAINER_EULA%
034  
035  # Check log.txt
036  RUN 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)
037  
038  # copy .mflic to the ent srv directory
039  COPY ${MFLICFILE} "${ETSTSRV_LOC}\\"
040  
041  # license the server
042  RUN set MFLICFILE=${MFLICFILE} && \
043      cd %ETSTSRV_LOC% && \
044      echo Using license file %MFLICFILE% && \
045     "%RMT_DIR%\\MFLicenseAdmin.exe" -install %MFLICFILE%
046  
047  # Cleaup directory
048  RUN set TMP_INST_DIR=${TMP_INST_DIR} && \
049      cd \ && \
050      rmdir /S /Q %TMP_INST_DIR%
051  
052  WORKDIR "${ETSTSRV_LOC}"

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

Lines Description
003 Specifies that the base image to use is the official Docker image for .NET Framework on Windows Server 2016 Server Core.
010 - 015 Define build arguments passed by the docker build command:
  • PRODUCT_VERSION. Indicates the version of Enterprise Test Server that this Dockerfile is supplied with.
  • ACCEPT_CONTAINER_EULA. Indicates acceptance of the terms laid out in the license agreement. The default setting of "no" means that you must modify this in order to indicate that you accept the terms of the license agreement.
  • ETSTSRV_EXE. Specifies the name of the Enterprise Test Server installation file. The default setting is the name of the file supplied with Enterprise Test Server.
  • ETSTSRV_LOC. Specifies the folder into which Enterprise Test Server will be installed.
  • TMP_INST_DIR. Specifies a temporary directory to be used while building the image. It is deleted when it is no longer needed.
  • MFLICFILE. Specifies the name of the license file to use for Enterprise Test Server.
016 - 020 Specify the metadata labels for the image that will be created. These labels can be queried using the docker inspect command.
023 - 024 Create environment variables to be used in this Dockerfile:
  • ETSTSRV_LOC is copied from the build argument of the same name that was defined earlier.
  • RMT_DIR specifies the location of the COBOL licensing management software. This is installed when you install Enterprise Test Server.
026 - 027 Sets the Docker working directory to be the temporary directory then copies the Enterprise Test Server installation file into it.
028 - 033 Run a series of concatenated Windows commands to:
  1. Set some environment variables based on the settings of build arguments.
  2. Run the Enterprise Test Server 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.
036 Runs a series of concatenated Windows commands to search the Enterprise Test Server installation log file for text indicating that the installation failed. If any such text is found no further processing takes place.
039 Copies the license file into the folder where Enterprise Test Server is to be installed.
042 - 045 Run a series of concatenated Windows commands to license Enterprise Test Server.
048 - 050 Runs a series of concatenated Windows commands to delete the Enterprise Test Server installation file and the temporary directory that was used to contain it.
052 Sets the Docker working directory to be the directory into which Enterprise Test Server was installed.