<?xml version="1.0" encoding="UTF-8"?>
<?asciidoc-toc maxdepth="2"?>
<?asciidoc-numbered?>
<article xmlns="http://docbook.org/ns/docbook" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en">
<info>
<title>Intershop Commerce Management - Docker Plugins</title>
<date>2023-04-21</date>
</info>
<section xml:id="asciidocsummary">
<title>Summary</title>
<simpara>This plugin collection contains plugins for building container images and
starting container of and for Intershop Commerce Management. It is necessary
that the <link xl:href="https://github.com/IntershopCommunicationsAG/icm-gradle-plugin">'ICM Gradle plugin'</link> was
applied to the project. Version 3.4.0 of this plugin is the minimum version.</simpara>
<simpara>This plugin is based on <link xl:href="https://github.com/bmuschko/gradle-docker-plugin">'Gradle Docker plugin'</link> and
the <link xl:href="https://github.com/docker-java/docker-java">'Docker-Java Framework'</link>.</simpara>
</section>
<section xml:id="asciidocintershop-commerce-management-docker-plugin">
<title>Intershop Commerce Management Docker Plugin</title>
<simpara>This plugin configures the basics of an Intershop Commerce Management product project.</simpara>
<section xml:id="asciidocplugin-configuration">
<title>Plugin Configuration</title>
<simpara>The plugins must be applied to the root project.</simpara>
<details open>
<summary>Groovy</summary>
<formalpara>
<title>build.gradle</title>
<para>
<programlisting language="groovy" linenumbering="unnumbered">plugins {
    id 'com.intershop.gradle.icm.base' version '3.4.14'
    id 'com.intershop.gradle.icm.docker' version '{latestRevision}'
}

intershop {
    // see https://github.com/IntershopCommunicationsAG/icm-gradle-plugin
    projectInfo {}
    projectConfig {}
}

intershop_docker {
    images {
        webadapter = 'intershophub/icm-webadapter:2.1.0'
        webadapteragent = 'intershophub/icm-webadapteragent:3.1.0'

        mssql = 'intershophub/mssql-intershop:2019-latest'
        oracle = 'intershophub/oracle-intershop:latest'

        mailsrv = 'mailhog/mailhog:latest'
    }

    imageBuild {
        license = 'Intershop Communications AG'
        maintainer = 'Intershop Communications AG "www.intershop.de"'
        baseDescription = 'Intershop Commerce Management'

        baseImageName = '${dockerRegHostName}/intershop/icm'
        images {
            mainImage {
                dockerfile = file('docker/main/Dockerfile')
                addFiles(tasks.createMainPkg.outputs.files)
                dockerBuildDir = 'main'
                description = 'AppServer Container'
                enabled = true
            }
            testImage {
                dockerfile = file('docker/test/Dockerfile')
                addFiles(tasks.createTestPkg.outputs.files)
                dockerBuildDir = 'test'
                description = 'AppServer Test Container'
                enabled = true
            }
        }
    }
}</programlisting>
</para>
</formalpara>
</details>
<details>
<summary>Kotlin</summary>
<formalpara>
<title>build.gradle.kts</title>
<para>
<programlisting language="kotlin" linenumbering="unnumbered">plugins {
    id("com.intershop.gradle.icm.base") version "3.4.14"
    id("com.intershop.gradle.icm.docker") version "{latestRevision}"
}

intershop {
    // see https://github.com/IntershopCommunicationsAG/icm-gradle-plugin
    projectInfo {}
    projectConfig {}
}

intershop_docker {
    images {
        webadapter.set("'intershophub/icm-webadapter:2.1.0")
        webadapteragent.set("intershophub/icm-webadapteragent:3.1.0")

        mssql.set("intershophub/mssql-intershop:2019-latest")
        oracle.set("intershophub/oracle-intershop:latest")

        mailsrv.set("mailhog/mailhog:latest")
    }


imageBuild {
        license.set("Intershop Communications AG")
        maintainer.set("Intershop Communications AG 'www.intershop.de'")
        baseDescription.set("Intershop Commerce Management")

        baseImageName.set("${dockerRegHostName}/intershop/icm")
        images {
            mainImage {
                dockerfile.set(file("docker/main/Dockerfile"))
                addFiles(tasks.createMainPkg.get().outputs.files)
                dockerBuildDir.set("main")
                description.set("AppServer Container")
                enabled.set(true)
            }
            testImage {
                dockerfile.set(file("docker/test/Dockerfile"))
                addFiles(tasks.createTestPkg.get().outputs.files)
                dockerBuildDir.set("test")
                description.set("AppServer Test Container")
                enabled.set(true)
            }
        }
    }

    developmentConfig {
        cartridgeList.set(setOf("ft_starter_store"))
    }
}</programlisting>
</para>
</formalpara>
</details>
<section xml:id="asciidocextension-intershop_docker">
<title>Extension 'intershop_docker'</title>
<simpara><emphasis role="strong">Properties</emphasis></simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="105.1875*"/>
<colspec colname="col_2" colwidth="42.075*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="231.4125*"/>
<thead>
<row>
<entry align="left" valign="top">Property</entry>
<entry align="left" valign="top">Type</entry>
<entry align="left" valign="top">Default value</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>containerProjectPrefix</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara>&lt;project name&gt;</simpara></entry>
<entry align="left" valign="top"><simpara>Underscores will be replaced with dashes. This property is used for container names, volumes and network in Docker.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>developmentConfig</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>DevelopmentConfiguration</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>This extension handles the access to a local property file, to adapt the configuration to a local environment. See <xref linkend="PropertiesFile"/>.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>images</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Images</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>This extension contains the configuration of all supported and necessary images.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>imageBuild</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>ProjectConfiguration</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>This part contains the configuration for all image artifacts of a build project.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<simpara><emphasis role="strong">Methods</emphasis></simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="3">
<colspec colname="col_1" colwidth="71.5275*"/>
<colspec colname="col_2" colwidth="71.5275*"/>
<colspec colname="col_3" colwidth="277.695*"/>
<thead>
<row>
<entry align="left" valign="top">Method</entry>
<entry align="left" valign="top">Parameter</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>developmentConfig</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Closure&lt;DevelopmentConfiguration&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Configures the development configuration of this project in a Groovy context.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>developmentConfig</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Action&lt;in DevelopmentConfiguration&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Configures the development configuration of this project in a Kotlin script context.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>images</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Closure&lt;Images&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Configures the images' configuration of this project in a Groovy context.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>images</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Action&lt;in Images&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Configures the images' configuration of this project in a Kotlin script context.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>imageBuild</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Closure&lt;ProjectConfiguration&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Configures the image build configuration of this project in a Groovy context.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>imageBuild</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Action&lt;in ProjectConfiguration&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Configures the image build configuration of this project in a Kotlin script context.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<section xml:id="asciidocdevelopment-configuration-developmentconfiguration">
<title>Development Configuration <literal>DevelopmentConfiguration</literal></title>
<simpara><emphasis role="strong">Properties</emphasis></simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="105.1875*"/>
<colspec colname="col_2" colwidth="42.075*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="231.4125*"/>
<thead>
<row>
<entry align="left" valign="top">Property</entry>
<entry align="left" valign="top">Type</entry>
<entry align="left" valign="top">Default value</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>appserverAsContainer</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Boolean</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>false</literal></simpara></entry>
<entry align="left" valign="top"><simpara>If the appserver runs as a container this value must be true. This is used for customer projects.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>licenseDirectory</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>&lt;GRADLE_USER_HOME&gt;/icm-default/lic</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The directory with a valid license file for the running project.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>configDirectory</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>&lt;GRADLE_USER_HOME&gt;/icm-default/conf</literal></simpara></entry>
<entry align="left" valign="top"><simpara>This directory contains the environment specific development configuration for ICM. See <xref linkend="PropertiesFile"/>.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>licenseFilePath</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>&lt;licenseDirectory&gt;/license.xml</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The file path of the license file (read only).</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>configFilePath</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>&lt;configDirectory&gt;/icm.properties</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The path of the configuration file (read only).</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>cartridgeList</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>SetProperty&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara><emphasis>none</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>The names of the cartridges to be used whenever an ICM-AS server is started inside a container.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<simpara><emphasis role="strong">Methods</emphasis></simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="3">
<colspec colname="col_1" colwidth="71.5275*"/>
<colspec colname="col_2" colwidth="71.5275*"/>
<colspec colname="col_3" colwidth="277.695*"/>
<thead>
<row>
<entry align="left" valign="top">Method</entry>
<entry align="left" valign="top">Parameter</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>getConfigProperty</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Get a property from the configuration file. If the property key is not available the return value is empty.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>getConfigProperty</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal>, <literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Get a property from the configuration file. If the property key is not available the return value is specified by the second parameter.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="asciidocimage-configuration-images">
<title>Image Configuration <literal>Images</literal></title>
<simpara><emphasis role="strong">Properties</emphasis></simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="105.1875*"/>
<colspec colname="col_2" colwidth="42.075*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="231.4125*"/>
<thead>
<row>
<entry align="left" valign="top">Property</entry>
<entry align="left" valign="top">Type</entry>
<entry align="left" valign="top">Default value</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>webadapter</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>docker.intershop.de/intershop/icm-webadapter:latest</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The image contains the web server of the Intershop Commerce Management application with a special Intershop Apache module.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>webadapteragent</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>docker.intershop.de/intershop/icm-webadapteragent:latest</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The web adapter agent image of the Intershop Commerce Management application.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>mssqldb</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>mcr.microsoft.com/mssql/server:2019-latest</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The Microsoft SQL  server image. There will be also a build file available.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>oracledb</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>docker.intershop.de/intershop/oracle-xe-server:18.4.0</literal></simpara></entry>
<entry align="left" valign="top"><simpara>This image is only available internally. The build files will be provided.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>mailsrv</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>mailhog/mailhog:latest</literal></simpara></entry>
<entry align="left" valign="top"><simpara>A mail server for testing the mail feature of the application.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>solr</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>solr/latest</literal></simpara></entry>
<entry align="left" valign="top"><simpara>This image is used for the Solr Cloud configuration with a single node.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>zookeeper</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>zookeeper:latest</literal></simpara></entry>
<entry align="left" valign="top"><simpara>This image is used for the Solr Cloud configuration with a single node.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>icm-nginx</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>icm-nginx:latest</literal></simpara></entry>
<entry align="left" valign="top"><simpara>This image is used for the Nginx reverse proxy for development without the WebAdapter.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="asciidocimage-build-configuration-projectconfiguration">
<title>Image Build Configuration <literal>ProjectConfiguration</literal><anchor xml:id="ProjectConfiguration" xreflabel="[ProjectConfiguration]"/></title>
<simpara><emphasis role="strong">Properties</emphasis></simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="105.1875*"/>
<colspec colname="col_2" colwidth="42.075*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="231.4125*"/>
<thead>
<row>
<entry align="left" valign="top">Property</entry>
<entry align="left" valign="top">Type</entry>
<entry align="left" valign="top">Default value</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>license</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara>"Intershop Communications AG"</simpara></entry>
<entry align="left" valign="top"><simpara>The license of image artifacts created by this build.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>maintainer</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara>"Intershop Communications AG \"www.intershop.de\""</simpara></entry>
<entry align="left" valign="top"><simpara>The maintainer of image artifacts created by this build.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>baseDescription</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara>"Intershop Commerce Management"</simpara></entry>
<entry align="left" valign="top"><simpara>The base description for all image artifacts created by this build.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>version</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>The version of image artifacts created by this build.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>created</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara>&lt;build time&gt;</simpara></entry>
<entry align="left" valign="top"><simpara>The build time of image artifacts created by this build. The machine time is used for the default value.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>baseImageName</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara>"server/intershop/icm"</simpara></entry>
<entry align="left" valign="top"><simpara>The base image name for all image artifacts created by this build.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>images</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Images</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>The detailed configuration of all image builds.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="asciidocimage-build-configuration-images">
<title>Image Build Configuration <literal>Images</literal></title>
<simpara><emphasis role="strong">Properties</emphasis></simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="105.1875*"/>
<colspec colname="col_2" colwidth="42.075*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="231.4125*"/>
<thead>
<row>
<entry align="left" valign="top">Property</entry>
<entry align="left" valign="top">Type</entry>
<entry align="left" valign="top">Default value</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>mainImage</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>ImageConfiguration</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>The configuration of the main server image build.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>testImage</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>ImageConfiguration</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>The configuration of the test server image build. This image uses the main image as a base image.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<simpara>For all properties configurations methods with a closure or an action are available.</simpara>
</section>
<section xml:id="asciidocdetailed-image-build-configuration-imageconfiguration">
<title>Detailed Image Build Configuration <literal>ImageConfiguration</literal></title>
<simpara><emphasis role="strong">Properties</emphasis></simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="105.1875*"/>
<colspec colname="col_2" colwidth="42.075*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="231.4125*"/>
<thead>
<row>
<entry align="left" valign="top">Property</entry>
<entry align="left" valign="top">Type</entry>
<entry align="left" valign="top">Default value</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>nameExtension</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>Image name extension of the special image. The base is used from the <xref linkend="ProjectConfiguration"/>.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>description</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>Extended description of the image.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>srcFiles</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>ConfigurableFileCollection</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>Source files for the build (start scripts etc.). This files are referenced by the Dockerfile.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>pkgTaskName</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>Files will be packaged by the build for an installation in a docker image. This is the name of the package task.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>dockerfile</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>RegularFileProperty</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>The docker file for the image build.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>dockerBuildDir</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>The working director for the image build.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>enabled</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;Boolean&gt;</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>The build of the image can be disabled for the project.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
</section>
</section>
<section xml:id="DockerPluginTasks">
<title>Tasks</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="2">
<colspec colname="col_1" colwidth="105.1875*"/>
<colspec colname="col_2" colwidth="315.5625*"/>
<thead>
<row>
<entry align="left" valign="top">Task name</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">prepareNetwork</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>Creates a network with the specified name &lt;extension name&gt;-network. All start tasks are dependend on this task.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">removeNetwork</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>Removes the network from the Docker configuration.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">*MSSQL</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>These tasks pull, start, stop and remove the MSSQL image.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">*Oracle</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>These tasks pull, start, stop and remove the Oracle DB image.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">*MailSrv</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>These tasks pull, start, stop and remove the Mail server image.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">*SolrCloud</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>These tasks orchestrate all Solr Cloud related tasks.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">*ZK</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>These tasks pull, start, stop and remove the Zookeeper image.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">*Solr</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>These tasks pull, start, stop and remove the Solr image.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">createWebVolumes</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>Creates necessary volumes for the ICM web server with WebAdapter Agent.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">removeWebVolumes</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>Removes web server volumes from the Docker configuration.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">*WAA</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>These tasks pull, start, stop and remove the ICM Web Adapter Agent image.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">*WA</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>These tasks pull, start, stop and remove the ICM Web Adapter image. This image contains a Apache webserver with the ICM WA module.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">*WebServer</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>These tasks orchestrate all web server related tasks.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">containerClean</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>This task starts the remove tasks for all available objects.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">generateICMProps</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>Generates an icm.properties file for local development.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">showICMASConfig</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>Shows a special part of icm.properties for local application server development.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">startEnv</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>Starts a docker based environment based on "intershop.environment.container" in the icm properties file.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">stopEnv</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>Stops the docker based environment based on "intershop.environment.container" in the icm properties file.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">*NGINX</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>These tasks pull, start, stop and remove the ICM NGINX image. This image contains a NGINX configured to terminate TLS and reverse proxy directly to the Application Server.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<section xml:id="asciidocgenerateicmprops-parameters">
<title><emphasis role="strong">generateICMProps</emphasis> Parameters</title>
<simpara>The task can be called with the following parameters:</simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="2">
<colspec colname="col_1" colwidth="75.735*"/>
<colspec colname="col_2" colwidth="345.015*"/>
<thead>
<row>
<entry align="left" valign="top">Parameter</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara>--db</simpara></entry>
<entry align="left" valign="top"><simpara>Option for the used database. The following values are possible:<?asciidoc-br?>
            <emphasis>oracle-container</emphasis> - Oracle configuration for database provided by a container<?asciidoc-br?>
            <emphasis>oracle</emphasis> - Oracle configuration for an external database<?asciidoc-br?>
            <emphasis>mssql-container</emphasis> - MSSQL configuration for database provided by a container<?asciidoc-br?>
            <emphasis>mssql</emphasis> - MSSQL configuration for an external database</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara>--icmas</simpara></entry>
<entry align="left" valign="top"><simpara>If this parameter specified, the properties file will be generated for app server development.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara>--icmenvops</simpara></entry>
<entry align="left" valign="top"><simpara>A comma-separated list of options for the icm.properties files.<?asciidoc-br?>
            <emphasis>dev</emphasis> - General development properties for the application server<?asciidoc-br?>
            <emphasis>mail</emphasis> - MailHog container is used as test mail server<?asciidoc-br?>
            <emphasis>solr</emphasis> - Singel node solr cluster with containers is used</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<simpara xml:id="TaskClasses">The package of all tasks is <literal>com.intershop.gradle.icm.docker.tasks</literal>.</simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="3">
<colspec colname="col_1" colwidth="110.4998*"/>
<colspec colname="col_2" colwidth="140.2498*"/>
<colspec colname="col_3" colwidth="170.0002*"/>
<thead>
<row>
<entry align="left" valign="top">Task name</entry>
<entry align="left" valign="top">Class</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">pull</emphasis>*</simpara></entry>
<entry align="left" valign="top"><simpara><literal>AbstractPullImage</literal></simpara></entry>
<entry align="left" valign="top"><simpara>These task pull the image or a set of images.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">start</emphasis>*</simpara></entry>
<entry align="left" valign="top"><simpara><literal>StartExtraContainer</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Start image with the necessary configuration.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">stop</emphasis>*</simpara></entry>
<entry align="left" valign="top"><simpara><literal>StopExtraContainer</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Stop image by name.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">remove</emphasis>*</simpara></entry>
<entry align="left" valign="top"><simpara><literal>RemoveContainerByName</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Removes image from Docker by name.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="asciidoctask-configuration">
<title>Task configuration</title>
<simpara>The following properties are part of the <xref linkend="PropertiesFile"/>.</simpara>
<section xml:id="MSSQLConfiguration">
<title>MSSQL</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="5">
<colspec colname="col_1" colwidth="42.075*"/>
<colspec colname="col_2" colwidth="252.45*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="42.075*"/>
<colspec colname="col_5" colwidth="42.075*"/>
<thead>
<row>
<entry align="left" valign="top">Key</entry>
<entry align="left" valign="top">Description</entry>
<entry align="left" valign="top">Co-domain</entry>
<entry align="left" valign="top">Mandatory/Optional</entry>
<entry align="left" valign="top">Default value</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.db.mssql.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the container port to be used for the database (normally no need to change)</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>1433</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.db.container.mssql.hostport</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the host port to be used for the database</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>1433</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.db.mssql.sa.password</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the password to be set for the sa-user</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>1ntershop5A</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.db.mssql.dbname</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the name of the actual DB to be created</simpara></entry>
<entry align="left" valign="top"><simpara>String</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>icmtestdb</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.db.mssql.recreatedb</literal></simpara></entry>
<entry align="left" valign="top"><simpara>controls if the actual DB is recreated on container start</simpara></entry>
<entry align="left" valign="top"><simpara>Boolean</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>false</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.db.mssql.recreateuser</literal></simpara></entry>
<entry align="left" valign="top"><simpara>controls if the DB-user is recreated on container start</simpara></entry>
<entry align="left" valign="top"><simpara>Boolean</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>false</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.jdbc.user</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the name of the actual DB user to be created</simpara></entry>
<entry align="left" valign="top"><simpara>String</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>intershop</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.jdbc.password</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the password of the actual DB user to be created</simpara></entry>
<entry align="left" valign="top"><simpara>String</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>intershop</literal><?asciidoc-br?></simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="OracleConfiguration">
<title>Oracle</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="5">
<colspec colname="col_1" colwidth="42.075*"/>
<colspec colname="col_2" colwidth="252.45*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="42.075*"/>
<colspec colname="col_5" colwidth="42.075*"/>
<thead>
<row>
<entry align="left" valign="top">Key</entry>
<entry align="left" valign="top">Description</entry>
<entry align="left" valign="top">Co-domain</entry>
<entry align="left" valign="top">Mandatory/Optional</entry>
<entry align="left" valign="top">Default value</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.db.oracle.listenerport</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Exposed listener port of the database.</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>1521</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.db.oracle.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Exposed enterprise manager port of the oracle db.</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>1521</literal><?asciidoc-br?></simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="WAConfiguration">
<title>WA</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="5">
<colspec colname="col_1" colwidth="42.075*"/>
<colspec colname="col_2" colwidth="252.45*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="42.075*"/>
<colspec colname="col_5" colwidth="42.075*"/>
<thead>
<row>
<entry align="left" valign="top">Key</entry>
<entry align="left" valign="top">Description</entry>
<entry align="left" valign="top">Co-domain</entry>
<entry align="left" valign="top">Mandatory/Optional</entry>
<entry align="left" valign="top">Default value</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>webserver.http.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the host port to be used for the WebAdapter http port</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>8080</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>webserver.https.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the host port to be used for the WebAdapter https port</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>8443</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>webserver.container.http.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the container port to be used for the WebAdapter http port (normally no need to change)</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>8080</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>webserver.container.https.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the container port to be used for the WebAdapter https port (normally no need to change)</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>8443</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>webServer.cert.path</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the host path to look for TLS certificate and private key (if not defined no certificates will be mounted for the WA)</simpara></entry>
<entry align="left" valign="top"><simpara>Path</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara>&lt;none&gt;<?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>webserver.cert.server</literal></simpara></entry>
<entry align="left" valign="top"><simpara>short name of the certificate file inside of <literal>webServer.cert.path</literal><?asciidoc-br?></simpara></entry>
<entry align="left" valign="top"><simpara>String</simpara></entry>
<entry align="left" valign="top"><simpara>mandatory if <literal>webServer.cert.path</literal> is set<?asciidoc-br?></simpara></entry>
<entry align="left" valign="top"><simpara>&lt;none&gt;<?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>webserver.cert.privatekey</literal></simpara></entry>
<entry align="left" valign="top"><simpara>short name of the private key file inside of <literal>webServer.cert.path</literal><?asciidoc-br?></simpara></entry>
<entry align="left" valign="top"><simpara>String</simpara></entry>
<entry align="left" valign="top"><simpara>mandatory if <literal>webServer.cert.path</literal> is set<?asciidoc-br?></simpara></entry>
<entry align="left" valign="top"><simpara>&lt;none&gt;<?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.ws.readinessProbe.interval</literal></simpara></entry>
<entry align="left" valign="top"><simpara>interval in seconds to be used to check if the WebAdapter is ready</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>2</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.ws.readinessProbe.timeout</literal></simpara></entry>
<entry align="left" valign="top"><simpara>max. number of seconds to wait for the WebAdapter to become ready</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>30</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>webserver.use.http2</literal></simpara></entry>
<entry align="left" valign="top"><simpara>enables/disables usage of HTTP2</simpara></entry>
<entry align="left" valign="top"><simpara>Boolean</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>false</literal><?asciidoc-br?></simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="NGINXConfiguration">
<title>NGINX</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="5">
<colspec colname="col_1" colwidth="42.075*"/>
<colspec colname="col_2" colwidth="252.45*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="42.075*"/>
<colspec colname="col_5" colwidth="42.075*"/>
<thead>
<row>
<entry align="left" valign="top">Key</entry>
<entry align="left" valign="top">Description</entry>
<entry align="left" valign="top">Co-domain</entry>
<entry align="left" valign="top">Mandatory/Optional</entry>
<entry align="left" valign="top">Default value</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>nginx.http.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the host port to be used for the NGINX http port</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>8080</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>nginx.https.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the host port to be used for the WebAdapter https port</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>8443</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>nginx.cert.path</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the host path to look for TLS certificate and private key (if not defined the certificates will be mounted from the Webserver certificate path)</simpara></entry>
<entry align="left" valign="top"><simpara>Path</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara>&lt;none&gt;<?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>nginx.cert.filename</literal></simpara></entry>
<entry align="left" valign="top"><simpara>name of the certificate file</simpara></entry>
<entry align="left" valign="top"><simpara>String</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>fullchain.pem</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>nginx.privatekey.filename</literal></simpara></entry>
<entry align="left" valign="top"><simpara>name of the certificate private key file</simpara></entry>
<entry align="left" valign="top"><simpara>String</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>privkey.pem</literal><?asciidoc-br?></simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="SolrConfiguration">
<title>Solr</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="5">
<colspec colname="col_1" colwidth="42.075*"/>
<colspec colname="col_2" colwidth="252.45*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="42.075*"/>
<colspec colname="col_5" colwidth="42.075*"/>
<thead>
<row>
<entry align="left" valign="top">Key</entry>
<entry align="left" valign="top">Description</entry>
<entry align="left" valign="top">Co-domain</entry>
<entry align="left" valign="top">Mandatory/Optional</entry>
<entry align="left" valign="top">Default value</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>solr.clusterIndexPrefix</literal></simpara></entry>
<entry align="left" valign="top"><simpara>prefix to be used for indexed inside Solr</simpara></entry>
<entry align="left" valign="top"><simpara>String</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara>&lt;empty&gt;<?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>solr.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the host port to be used for the Solr server primary port</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>8983</literal><?asciidoc-br?></simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="ZKConfiguration">
<title>ZooKeeper</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="5">
<colspec colname="col_1" colwidth="42.075*"/>
<colspec colname="col_2" colwidth="252.45*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="42.075*"/>
<colspec colname="col_5" colwidth="42.075*"/>
<thead>
<row>
<entry align="left" valign="top">Key</entry>
<entry align="left" valign="top">Description</entry>
<entry align="left" valign="top">Co-domain</entry>
<entry align="left" valign="top">Mandatory/Optional</entry>
<entry align="left" valign="top">Default value</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>zookeeper.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the host port to be used for the Zookeeper&#8217;s primary port</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>2181</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>zookeeper.metrics.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the host port to be used for the Zookeeper&#8217;s metrics port</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>7000</literal><?asciidoc-br?></simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="MailConfiguration">
<title>Mail</title>
<simpara>There are no special configuration properties for the mail server.
The SMTP port is <literal>25</literal> and the web interface listened on 8025. Mails are stored in the build directory <literal>mailoutput</literal>.</simpara>
</section>
</section>
</section>
</section>
<section xml:id="asciidocintershop-commerce-management-customization-docker-plugin">
<title>Intershop Commerce Management Customization Docker Plugin</title>
<simpara>This plugin configures additional tasks of an Intershop Commerce Management customization project. It uses the same Gradle
configuration like the Docker Plugin. With this plugin the task dependencies are
adapted to build customization images.</simpara>
<simpara>The plugins must be applied to the root project.</simpara>
<section xml:id="asciidocplugin-configuration-2">
<title>Plugin Configuration</title>
<section xml:id="asciidocextension-intershop_docker-2">
<title>Extension 'intershop_docker'</title>
<simpara><emphasis role="strong">Properties</emphasis></simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="105.1875*"/>
<colspec colname="col_2" colwidth="42.075*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="231.4125*"/>
<thead>
<row>
<entry align="left" valign="top">Property</entry>
<entry align="left" valign="top">Type</entry>
<entry align="left" valign="top">Default value</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>ishUnitTests</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>NamedDomainObjectContainer&lt;Suite&gt;</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>This is a configuration for special Intershop server unit tests. This configuration is used only in a customer project.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<section xml:id="asciidocobject-suite">
<title>Object <literal>Suite</literal></title>
<simpara><emphasis role="strong">Properties</emphasis></simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="105.1875*"/>
<colspec colname="col_2" colwidth="42.075*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="231.4125*"/>
<thead>
<row>
<entry align="left" valign="top">Property</entry>
<entry align="left" valign="top">Type</entry>
<entry align="left" valign="top">Default value</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>cartridge</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>This is the name of a cartridge that also contains ishUnitTests.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>testSuite</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>The name of the test suite.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="asciidocadditional-image-configuration-images">
<title>Additional Image Configuration <literal>Images</literal></title>
<simpara><emphasis role="strong">Properties</emphasis></simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="105.1875*"/>
<colspec colname="col_2" colwidth="42.075*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="231.4125*"/>
<thead>
<row>
<entry align="left" valign="top">Property</entry>
<entry align="left" valign="top">Type</entry>
<entry align="left" valign="top">Default value</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>icmbase</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>docker.intershop.de/intershop/icm-as:latest</literal></simpara></entry>
<entry align="left" valign="top"><simpara>This image is used as a base image for the ICM application server image.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>icmbasetest</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>docker.intershop.de/intershop/icm-as-test:latest</literal></simpara></entry>
<entry align="left" valign="top"><simpara>This image is used as a base image for the ICM application server image whenever tests are executed.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>icmcustomizationbase</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>intershophub/icm-as-customization-base:latest</literal></simpara></entry>
<entry align="left" valign="top"><simpara>This image is used as a base image for the ICM application server customization image.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
</section>
</section>
<section xml:id="CustomizationDockerPluginTasks">
<title>Tasks</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="2">
<colspec colname="col_1" colwidth="105.1875*"/>
<colspec colname="col_2" colwidth="315.5625*"/>
<thead>
<row>
<entry align="left" valign="top">Task name</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">*Container</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>These tasks pull, start, stop and remove the ICM application server image with a special command. There is no running process inside, but it uses the same configuration like the appserver container.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">*AS</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>These tasks pull, start, stop and remove the ICM application server image.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">*Server</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>These tasks orchestrate all ICM server related tasks (web server and app server)</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">dbPrepare</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>This task starts dbPrepare inside the running "Container" docker container.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">ishUnitTestReport</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>This task starts the creation of a report for all ISHUnit test executions.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">*ISHUnitTest</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>This task starts ishUnit tests inside the running "Container" docker container.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<simpara>For task classes see the <link linkend="TaskClasses">documentation of task in the Intershop Commerce Management Docker Plugin</link>.
The task <emphasis role="strong">startContainer</emphasis> and <emphasis role="strong">startAS</emphasis> uses <literal>StartServerContainer</literal>. <emphasis role="strong">pullContainer</emphasis> and <emphasis role="strong">pullAS</emphasis> uses <literal>PullImage</literal>.
With this task it is possible to use an alternative image for these tasks with a command line parameter <literal>--altImage</literal>.</simpara>
<section xml:id="asciidoctask-configuration-2">
<title>Task configuration</title>
<simpara>The following properties are part of the <xref linkend="PropertiesFile"/>.</simpara>
<section xml:id="DBPrepareConfiguration">
<title>dbPrepare</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="5">
<colspec colname="col_1" colwidth="42.075*"/>
<colspec colname="col_2" colwidth="252.45*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="42.075*"/>
<colspec colname="col_5" colwidth="42.075*"/>
<thead>
<row>
<entry align="left" valign="top">Key</entry>
<entry align="left" valign="top">Description</entry>
<entry align="left" valign="top">Co-domain</entry>
<entry align="left" valign="top">Mandatory/Optional</entry>
<entry align="left" valign="top">Default value</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.as.connector.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the host port to be used for the appserver service connector http port</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>7743</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.servletEngine.connector.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the container port to be used for the appserver service connector http port (normally no need to change)</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>7743</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.as.managementConnector.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the host port to be used for the appserver management connector http port</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>7743</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.servletEngine.managementConnector.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the container port to be used for the appserver management connector http port (normally no need to change)</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>7743</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.as.jmx.connector.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the host port to be used for the appserver JMX port</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>7747</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.as.debug.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>the host port to be used for the appserver debug port</simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>7746</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.databaseType</literal></simpara></entry>
<entry align="left" valign="top"><simpara>database type to be used</simpara></entry>
<entry align="left" valign="top"><simpara>{ <literal>mssql</literal>, <literal>oracle</literal> }</simpara></entry>
<entry align="left" valign="top"><simpara>Mandatory</simpara></entry>
<entry align="left" valign="top"><simpara>&lt;none&gt;<?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.jdbc.url</literal></simpara></entry>
<entry align="left" valign="top"><simpara>JDBC URL pointing to the database to be used</simpara></entry>
<entry align="left" valign="top"><simpara>URL</simpara></entry>
<entry align="left" valign="top"><simpara>Mandatory</simpara></entry>
<entry align="left" valign="top"><simpara>&lt;none&gt;<?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.jdbc.user</literal></simpara></entry>
<entry align="left" valign="top"><simpara>JDBC database user</simpara></entry>
<entry align="left" valign="top"><simpara>String</simpara></entry>
<entry align="left" valign="top"><simpara>Mandatory</simpara></entry>
<entry align="left" valign="top"><simpara>&lt;none&gt;<?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.jdbc.password</literal></simpara></entry>
<entry align="left" valign="top"><simpara>JDBC database password</simpara></entry>
<entry align="left" valign="top"><simpara>String</simpara></entry>
<entry align="left" valign="top"><simpara>Mandatory</simpara></entry>
<entry align="left" valign="top"><simpara>&lt;none&gt;<?asciidoc-br?></simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<simpara>The referenced database can either be an externally running database or an instance started using the gradle <xref linkend="DockerPluginTasks"/> <literal>startMSSQL</literal> respectively <literal>startOracle</literal>. In either case the properties <literal>intershop.databaseType</literal> and <literal>intershop.jdbc.*</literal> have to be defined properly (when using the gradle tasks the hostname equals the container name).</simpara>
</section>
<section xml:id="StartASConfiguration">
<title>Application Server</title>
<simpara>Configuration of <xref linkend="DBPrepareConfiguration"/> also applies to the application server. But there are some additional properties:</simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="5">
<colspec colname="col_1" colwidth="42.075*"/>
<colspec colname="col_2" colwidth="252.45*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="42.075*"/>
<colspec colname="col_5" colwidth="42.075*"/>
<thead>
<row>
<entry align="left" valign="top">Key</entry>
<entry align="left" valign="top">Description</entry>
<entry align="left" valign="top">Co-domain</entry>
<entry align="left" valign="top">Mandatory/Optional</entry>
<entry align="left" valign="top">Default value</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.as.readinessProbe.interval</literal></simpara></entry>
<entry align="left" valign="top"><simpara>interval in seconds to be used to check if the appserver is <emphasis>ready</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>15</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.as.readinessProbe.timeout</literal></simpara></entry>
<entry align="left" valign="top"><simpara>max. number of seconds to wait for the appserver to become <emphasis>ready</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>Integer</simpara></entry>
<entry align="left" valign="top"><simpara>Optional</simpara></entry>
<entry align="left" valign="top"><simpara><literal>6000</literal> (full dbinit may be necessary)<?asciidoc-br?></simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="ISHUnitTestConfiguration">
<title>ISH unit tests</title>
<simpara>Configuration of <xref linkend="DBPrepareConfiguration"/> also applies to the container started to run the ISH unit tests.</simpara>
</section>
</section>
<section xml:id="asciidoctask-parameters">
<title>Task parameters</title>
<section xml:id="DBPrepareParameters">
<title>dbPrepare</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="42.075*"/>
<colspec colname="col_2" colwidth="294.525*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="42.075*"/>
<thead>
<row>
<entry align="left" valign="top">Parameter</entry>
<entry align="left" valign="top">Description</entry>
<entry align="left" valign="top">Co-domain</entry>
<entry align="left" valign="top">Default value</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>mode</literal></simpara></entry>
<entry align="left" valign="top"><simpara>controls which mode is used by <literal>dbPrepare</literal> (forced initialization/migration or automatic)<?asciidoc-br?></simpara></entry>
<entry align="left" valign="top"><simpara>{ <literal>init</literal>, <literal>migrate</literal>, <literal>auto</literal> }<?asciidoc-br?></simpara></entry>
<entry align="left" valign="top"><simpara><literal>auto</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>clean</literal></simpara></entry>
<entry align="left" valign="top"><simpara>controls if <literal>dbPrepare</literal> just cleans the DB and sites (<literal>only</literal>), cleans and inits the DB and sites (<literal>yes</literal>) or migrates the DB and sites (<literal>no</literal>)</simpara></entry>
<entry align="left" valign="top"><simpara>{<literal>only</literal>, <literal>yes</literal>, <literal>no</literal>}<?asciidoc-br?></simpara></entry>
<entry align="left" valign="top"><simpara><literal>no</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>cartridges</literal></simpara></entry>
<entry align="left" valign="top"><simpara>controls which cartridges are actually prepared</simpara></entry>
<entry align="left" valign="top"><simpara>comma-separated list of cartridge names to prepare</simpara></entry>
<entry align="left" valign="top"><simpara>&lt;none&gt;</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>property-keys</literal></simpara></entry>
<entry align="left" valign="top"><simpara>controls which preparers are actually executed</simpara></entry>
<entry align="left" valign="top"><simpara>comma-separated list of preparer property keys to execute</simpara></entry>
<entry align="left" valign="top"><simpara>&lt;none&gt;</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>additional-parameter</literal></simpara></entry>
<entry align="left" valign="top"><simpara>additional command line parameters to be passed to <literal>dbPrepare</literal>. Use more than once to passed more than 1 parameter</simpara></entry>
<entry align="left" valign="top"><simpara>String</simpara></entry>
<entry align="left" valign="top"><simpara>&lt;none&gt;</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>debug-icm</literal></simpara></entry>
<entry align="left" valign="top"><simpara>controls if the Java code inside of <literal>dbPrepare</literal> can be debugged and if the JVM suspends until a debug client connects<?asciidoc-br?></simpara></entry>
<entry align="left" valign="top"><simpara>{ <literal>no</literal>, <literal>yes</literal>, <literal>suspend</literal> }<?asciidoc-br?></simpara></entry>
<entry align="left" valign="top"><simpara><literal>no</literal><?asciidoc-br?></simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<details>
<summary>Examples</summary>
<formalpara>
<title>fresh initialization</title>
<para>
<programlisting language="shell" linenumbering="unnumbered">./gradlew dbPrepare --mode=init --clean=yes</programlisting>
</para>
</formalpara>
<formalpara>
<title>only execute some preparers of a cartridge</title>
<para>
<programlisting language="shell" linenumbering="unnumbered">./gradlew dbPrepare --cartridges=core --property-keys=Class2,Class4</programlisting>
</para>
</formalpara>
<formalpara>
<title>use custom parameters</title>
<para>
<programlisting language="shell" linenumbering="unnumbered">./gradlew dbPrepare --additional-parameter="--force-exec-id=core:Class2,core:Class4" --additional-parameter="--dry-run-save"</programlisting>
</para>
</formalpara>
</details>
</section>
<section xml:id="StartASParameters">
<title>Application Server</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="42.075*"/>
<colspec colname="col_2" colwidth="294.525*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="42.075*"/>
<thead>
<row>
<entry align="left" valign="top">Parameter</entry>
<entry align="left" valign="top">Description</entry>
<entry align="left" valign="top">Co-domain</entry>
<entry align="left" valign="top">Default value</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>debug-icm</literal></simpara></entry>
<entry align="left" valign="top"><simpara>controls if the Java code inside application server can be debugged and if the JVM suspends until a debug client connects<?asciidoc-br?></simpara></entry>
<entry align="left" valign="top"><simpara>{ <literal>no</literal>, <literal>yes</literal>, <literal>suspend</literal> }<?asciidoc-br?></simpara></entry>
<entry align="left" valign="top"><simpara><literal>no</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>gclog</literal></simpara></entry>
<entry align="left" valign="top"><simpara>toggles if GC logs are written by the application server<?asciidoc-br?></simpara></entry>
<entry align="left" valign="top"><simpara>Switch</simpara></entry>
<entry align="left" valign="top"><simpara><literal>false</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>heapdump</literal></simpara></entry>
<entry align="left" valign="top"><simpara>toggles if a heapdump is written by the application server in case of an <literal>OutOfMemoryError</literal><?asciidoc-br?></simpara></entry>
<entry align="left" valign="top"><simpara>Switch</simpara></entry>
<entry align="left" valign="top"><simpara><literal>false</literal><?asciidoc-br?></simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>appserver-name</literal></simpara></entry>
<entry align="left" valign="top"><simpara>sets a custom name for the application server<?asciidoc-br?></simpara></entry>
<entry align="left" valign="top"><simpara>String</simpara></entry>
<entry align="left" valign="top"><simpara><literal>appserver</literal><?asciidoc-br?></simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<details>
<summary>Examples</summary>
<formalpara>
<title>start with debugging in suspend mode</title>
<para>
<programlisting language="shell" linenumbering="unnumbered">./gradlew startAS --debug-icm=suspend</programlisting>
</para>
</formalpara>
<formalpara>
<title>start with GC-logging and heap dump</title>
<para>
<programlisting language="shell" linenumbering="unnumbered">./gradlew startAS --gclog --heapdump</programlisting>
</para>
</formalpara>
</details>
<important>
<simpara>As long as the application server is starting the container&#8217;s log output is forwared to the host&#8217;s standard out. Afterwards it is only accessible by <literal>docker logs</literal>.</simpara>
</important>
<note>
<simpara>the application server can be started using a custom image (e.g. different version) using the <literal>--altImage</literal> parameter.</simpara>
</note>
</section>
<section xml:id="ISHUnitTestParameters">
<title>ISH unit tests</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="42.075*"/>
<colspec colname="col_2" colwidth="294.525*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="42.075*"/>
<thead>
<row>
<entry align="left" valign="top">Parameter</entry>
<entry align="left" valign="top">Description</entry>
<entry align="left" valign="top">Co-domain</entry>
<entry align="left" valign="top">Default value</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>debug-icm</literal></simpara></entry>
<entry align="left" valign="top"><simpara>controls if the Java code inside application server can be debugged and if the JVM suspends until a debug client connects<?asciidoc-br?></simpara></entry>
<entry align="left" valign="top"><simpara>{ <literal>no</literal>, <literal>yes</literal>, <literal>suspend</literal> }<?asciidoc-br?></simpara></entry>
<entry align="left" valign="top"><simpara><literal>no</literal><?asciidoc-br?></simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<details>
<summary>Examples</summary>
<formalpara>
<title>start all ISH unit tests</title>
<para>
<programlisting language="shell" linenumbering="unnumbered">./gradlew ishUnitTestReport</programlisting>
</para>
</formalpara>
<formalpara>
<title>start ISH unit tests of suite <literal>ac_solr_cloud_test</literal> (defined inside of <literal>intershop_docker.ishUnitTests</literal>)</title>
<para>
<programlisting language="shell" linenumbering="unnumbered">./gradlew ac_solr_cloud_testISHUnitTest</programlisting>
</para>
</formalpara>
</details>
<note>
<simpara>The ISH unit test report is generated to <literal>&lt;buildRoot&gt;/build/ishunitrunner</literal>.</simpara>
</note>
</section>
</section>
</section>
</section>
<section xml:id="asciidocintershop-commerce-management-test-docker-plugin">
<title>Intershop Commerce Management Test Docker Plugin</title>
<simpara>Additional test tasks of an Intershop Commerce Management project will be added by this plugin. It uses the same Gradle
configuration like the Docker Plugin. One additional task is added by this plugin.</simpara>
<simpara>The plugins must be applied to the root project.</simpara>
<section xml:id="asciidocplugin-configuration-3">
<title>Plugin Configuration</title>
<section xml:id="asciidocadditional-image-configuration-images-2">
<title>Additional Image Configuration <literal>Images</literal></title>
<simpara><emphasis role="strong">Properties</emphasis></simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="105.1875*"/>
<colspec colname="col_2" colwidth="42.075*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="231.4125*"/>
<thead>
<row>
<entry align="left" valign="top">Property</entry>
<entry align="left" valign="top">Type</entry>
<entry align="left" valign="top">Default value</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>testmailsrv</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>docker-internal.rnd.intershop.de/icm-test/iste-mail:latest</literal></simpara></entry>
<entry align="left" valign="top"><simpara>This image is used for ICM HTMLUnitTests.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
</section>
<section xml:id="asciidoctasks">
<title>Tasks</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="2">
<colspec colname="col_1" colwidth="105.1875*"/>
<colspec colname="col_2" colwidth="315.5625*"/>
<thead>
<row>
<entry align="left" valign="top">Task name</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">*TestMailSrv</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>These tasks pull, start, stop and remove the Test mail server image.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<simpara>For task classes see the <link linkend="TaskClasses">documentation of task in the Intershop Commerce Management Docker Plugin</link>.</simpara>
</section>
</section>
<section xml:id="asciidocintershop-commerce-management-gebtest-docker-plugin">
<title>Intershop Commerce Management GebTest Docker Plugin</title>
<simpara>This plugin adds test tasks for <link xl:href="https://gebish.org">Geb</link>.</simpara>
<section xml:id="asciidocplugin-configuration-4">
<title>Plugin Configuration</title>
<simpara>The plugin must be applied to the project with included Geb tests. It requires an applied ICM Docker plugin.
Furthermore it depends on the configuration of Geb self (<literal>GebConfig.groovy</literal>).</simpara>
<details open>
<summary>Groovy</summary>
<formalpara>
<title>build.gradle</title>
<para>
<programlisting language="groovy" linenumbering="unnumbered">plugins {
    id 'com.intershop.gradle.icm.docker.gebtest' version '3.4.0'
}

gebConfiguration {
    localDriver {
        geckoDriver {
            osPackages {
                linux {
                    url = 'https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-linux64.tar.gz'
                    archiveType = 'tar.gz'
                    webDriverExecName = 'geckodriver'
                }
                win {
                    url = 'https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-win32.zip'
                    archiveType = 'zip'
                    webDriverExecName = 'geckodriver.exe'
                }
                mac {
                    url = 'https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-macos.tar.gz'
                    archiveType = 'tar.gz'
                    webDriverExecName = 'geckodriver'
                }
            }
        }
        chromeDriver {
            osPackages {
                linux {
                    url = 'https://chromedriver.storage.googleapis.com/86.0.4240.22/chromedriver_linux64.zip'
                    archiveType = 'zip'
                    webDriverExecName = 'chromedriver'
                }
                win {
                    url = 'https://chromedriver.storage.googleapis.com/86.0.4240.22/chromedriver_win32.zip'
                    archiveType = 'zip'
                    webDriverExecName = 'chromedriver.exe'
                }
                mac {
                    url = 'https://chromedriver.storage.googleapis.com/86.0.4240.22/chromedriver_mac64.zip'
                    archiveType = 'zip'
                    webDriverExecName = 'chromedriver'
                }
            }
        }
    }
}</programlisting>
</para>
</formalpara>
</details>
<details>
<summary>Kotlin</summary>
<formalpara>
<title>build.gradle.kts</title>
<para>
<programlisting language="kotlin" linenumbering="unnumbered">plugins {
    id("com.intershop.gradle.icm.docker.gebtest") version "3.4.0"
}

extensions.getByType(GebConfiguration::class.java).apply {
    localDriver {
        register("geckoDriver") {
            osPackages {
                register("linux") {
                    url.set("https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-linux64.tar.gz")
                    archiveType.set("tar.gz")
                    webDriverExecName.set("geckodriver")
                }
                register("win") {
                    url.set("https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-win32.zip")
                    archiveType.set("zip")
                    webDriverExecName.set("geckodriver.exe")
                }
                register("mac") {
                    url.set("https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-macos.tar.gz")
                    archiveType.set("tar.gz")
                    webDriverExecName.set("geckodriver")
                }
            }
        }
        register("chromeDriver") {
            osPackages {
                register("linux") {
                    url.set("https://chromedriver.storage.googleapis.com/86.0.4240.22/chromedriver_linux64.zip")
                    archiveType.set("zip")
                    webDriverExecName.set("chromedriver")
                }
                register("win") {
                    url.set("https://chromedriver.storage.googleapis.com/86.0.4240.22/chromedriver_win32.zip")
                    archiveType.set("zip")
                    webDriverExecName.set("chromedriver.exe")
                }
                register("mac") {
                    url.set("https://chromedriver.storage.googleapis.com/86.0.4240.22/chromedriver_mac64.zip")
                    archiveType.set("zip")
                    webDriverExecName.set("chromedriver")
                }
            }
        }
    }
}</programlisting>
</para>
</formalpara>
</details>
<simpara>This plugin adds also a source set configuration for gebTests:</simpara>
<itemizedlist>
<listitem>
<simpara>source directory is <literal>"src/gebTest/groovy"</literal></simpara>
</listitem>
<listitem>
<simpara>resource directory is <literal>"src/gebTest/resources"</literal></simpara>
</listitem>
</itemizedlist>
<simpara>The plugin is based on the following GebTest configuration:</simpara>
<formalpara>
<title>resources/GebConfig.groovy</title>
<para>
<programlisting language="groovy" linenumbering="unnumbered">import org.junit.runner.Description
import org.junit.runners.model.Statement
import org.openqa.selenium.Dimension
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.chrome.ChromeOptions
import org.openqa.selenium.firefox.FirefoxDriver
import org.openqa.selenium.firefox.FirefoxOptions
import org.openqa.selenium.firefox.FirefoxDriverLogLevel
import org.testcontainers.DockerClientFactory
import org.testcontainers.containers.BrowserWebDriverContainer
import org.testcontainers.containers.Network

def webDriverExec = System.getProperty('webdriverExec')
def containerNetwork = System.getProperty('container.network')

waiting {
    // max request time in seconds
    timeout = 90
    // http://gebish.org/manual/current/#failure-causes
    includeCauseInMessage = true
}

environments {
    firefoxContainer {
        driver = {
            def networkId = findNetworkIdForName(containerNetwork)
            BrowserWebDriverContainer webdriverContainer = addFirefoxContainerToNetwork(networkId)
            webdriverContainer.start()
            driver = webdriverContainer.getWebDriver()
            driver
        }
    }

    chromeContainer {
        driver = {
            def networkId = findNetworkIdForName(containerNetwork)
            BrowserWebDriverContainer webdriverContainer = addFirefoxContainerToNetwork(networkId)
            webdriverContainer.start()
            driver = webdriverContainer.getWebDriver()
            driver
        }
    }

    chromeTablet {
        driver = {
            def driver = createChromeDriverInstance(webDriverExec)
            driver.manage().window().setSize(new Dimension(1024, 768))
            driver
        }
    }

    chromePC {
        driver = {
            def driver = createChromeDriverInstance(webDriverExec)
            driver.manage().window().setSize(new Dimension(1920, 1200))
            driver
        }
    }

    geckoPC {
        driver = {
            def driver = createGeckoDriverInstance(webDriverExec)
            driver.manage().window().setSize(new Dimension(1920, 1200))
            driver
        }
    }

    geckoTablet {
        driver = {
            def driver = createGeckoDriverInstance(webDriverExec)
            driver.manage().window().setSize(new Dimension(1024, 768))
            driver
        }
    }
}

private def createGeckoDriverInstance(String webDriverExec) {
    System.setProperty("webdriver.gecko.driver", webDriverExec)
    FirefoxOptions options = new FirefoxOptions()
    //options.setHeadless(true)
    options.setLogLevel(FirefoxDriverLogLevel.ERROR)
    driverInstance = new FirefoxDriver(options)
    driverInstance
}

private def createChromeDriverInstance(String webDriverExec) {
    System.setProperty("webdriver.chrome.driver", webDriverExec)
    driverInstance = new ChromeDriver()
    driverInstance
}

private BrowserWebDriverContainer addFirefoxContainerToNetwork(String networkId){
    Network tcNet = createNetwork(networkId)

    FirefoxOptions options = new FirefoxOptions()
    options.setHeadless(true)
    BrowserWebDriverContainer webdriverContainer = new BrowserWebDriverContainer&lt;&gt;()
            .withCapabilities(options)
            .withNetwork(tcNet)

    return webdriverContainer
}

private BrowserWebDriverContainer addChromeContainerToNetwork(String networkId){
    Network tcNet = createNetwork(networkId)

    ChromeOptions options = new ChromeOptions()
    options.setHeadless(true)
    BrowserWebDriverContainer webdriverContainer = new BrowserWebDriverContainer&lt;&gt;()
            .withCapabilities(options)
            .withNetwork(tcNet)

    return webdriverContainer
}

private String findNetworkIdForName(String name) {
    def client = DockerClientFactory.instance().client()
    def rv = client.inspectNetworkCmd().withNetworkId(name).exec().id
    return rv
}

private createNetwork(networkId) {
    Network tcNet = new Network() {

        String getId() {
            return networkId
        }

        void close() throws Exception {}

        Statement apply(Statement base, Description description) {
            return null
        }
    }
    return tcNet
}</programlisting>
</para>
</formalpara>
<simpara>The plugin set the following system properties for the test:</simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%"?>
<?dbfo table-width="99%"?>
<?dblatex table-width="99%"?>
<tgroup cols="2">
<colspec colname="col_1" colwidth="126.225*"/>
<colspec colname="col_2" colwidth="294.525*"/>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>webdriverExec</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Executable name for local drivers from the extension configuration.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>container.network</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Network for the test containers framework.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>geb.build.baseUrl</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The url will be calculated from the base configuration of the web server image. If the container framework is used, the internal network name is used.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<simpara>Furthermore the host</simpara>
<section xml:id="asciidocextension-gebconfiguration">
<title>Extension 'gebConfiguration'</title>
<simpara><emphasis role="strong">Properties</emphasis></simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="105.1875*"/>
<colspec colname="col_2" colwidth="42.075*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="231.4125*"/>
<thead>
<row>
<entry align="left" valign="top">Property</entry>
<entry align="left" valign="top">Type</entry>
<entry align="left" valign="top">Default value</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>gebEnvironment</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara>"firefoxContainer"</simpara></entry>
<entry align="left" valign="top"><simpara>Name of the configured in the Geb configuration file <literal>GebConfig.groovy</literal>.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>localDriver</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>NamedDomainObjectContainer&lt;GebLocalDriver&gt;</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>Container with local driver configurations.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="asciidocobject-geblocaldriver">
<title>Object <literal>GebLocalDriver</literal></title>
<simpara><emphasis role="strong">Properties</emphasis></simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="105.1875*"/>
<colspec colname="col_2" colwidth="42.075*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="231.4125*"/>
<thead>
<row>
<entry align="left" valign="top">Property</entry>
<entry align="left" valign="top">Type</entry>
<entry align="left" valign="top">Default value</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>osPackages</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>NamedDomainObjectContainer&lt;GebDriverDownload&gt;</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>Container with a configuration to download the necessary driver download.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="asciidocobject-gebdriverdownload">
<title>Object <literal>GebDriverDownload</literal></title>
<simpara><emphasis role="strong">Properties</emphasis></simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="105.1875*"/>
<colspec colname="col_2" colwidth="42.075*"/>
<colspec colname="col_3" colwidth="42.075*"/>
<colspec colname="col_4" colwidth="231.4125*"/>
<thead>
<row>
<entry align="left" valign="top">Property</entry>
<entry align="left" valign="top">Type</entry>
<entry align="left" valign="top">Default value</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><literal>url</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>Container with a configuration to download the necessary driver download.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>archiveType</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>Container with a configuration to download the necessary driver download.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>webDriverExecName</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Property&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"></entry>
<entry align="left" valign="top"><simpara>Container with a configuration to download the necessary driver download.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
</section>
<section xml:id="asciidoctasks-2">
<title>Tasks</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="3">
<colspec colname="col_1" colwidth="110.4998*"/>
<colspec colname="col_2" colwidth="140.2498*"/>
<colspec colname="col_3" colwidth="170.0002*"/>
<thead>
<row>
<entry align="left" valign="top">Task name</entry>
<entry align="left" valign="top">Class</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">gebTest</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Test</literal><?asciidoc-br?>
<literal>GebTest</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Starts the Geb Test form the gebTest source set.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">downloadDriver</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>GebDriverDownload</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Downloads and unpack the configured local driver if necessary.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<simpara><xref linkend="PropertiesFile"/> and Image Properties</simpara>
<simpara>It is possible to switch to a local driver for development purposes.</simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="3">
<colspec colname="col_1" colwidth="42.075*"/>
<colspec colname="col_2" colwidth="189.3375*"/>
<colspec colname="col_3" colwidth="189.3375*"/>
<thead>
<row>
<entry align="left" valign="top">Task</entry>
<entry align="left" valign="top">Property Key</entry>
<entry align="left" valign="top">Property Value</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top" morerows="1"><simpara><literal>gebTest</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>geb.local.driver</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The name of the local driver.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>geb.local.environment</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The name of the local environment.</simpara></entry>
</row>
<row>
<entry align="left" valign="top" namest="col_1" nameend="col_3"><simpara>For container configuration</simpara></entry>
</row>
<row>
<entry align="left" valign="top" morerows="1"><simpara><emphasis role="strong">*</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>webserver.container.http.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The exposed http port of the webserver. Default: 808</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>webserver.container.https.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The exposed https port of the webserver. Default: 8443</simpara></entry>
</row>
<row>
<entry align="left" valign="top" namest="col_1" nameend="col_3"><simpara>For local configuration</simpara></entry>
</row>
<row>
<entry align="left" valign="top" morerows="2"><simpara><emphasis role="strong">*</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>intershop.local.hostname</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The hostname or the IP of the local machine.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>webserver.http.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The exposed http port of the webserver.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>webserver.https.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The exposed https port of the webserver.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
</section>
<section xml:id="asciidocintershop-commerce-management-solrcloud-plugin">
<title>Intershop Commerce Management SolrCloud Plugin</title>
<simpara>If the project includes SolrCloud as a search engine, this plugin provides some necessary tasks for the
management of search indexes. It uses the same configuration like the ICM Docker plugin.</simpara>
<section xml:id="asciidoctasks-3">
<title>Tasks</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="3">
<colspec colname="col_1" colwidth="110.4998*"/>
<colspec colname="col_2" colwidth="140.2498*"/>
<colspec colname="col_3" colwidth="170.0002*"/>
<thead>
<row>
<entry align="left" valign="top">Task name</entry>
<entry align="left" valign="top">Class</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">cleanUpSolr</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>CleanUpSolr</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Removes all search configurations and collections with a specified prefix.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">listSolr</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>ListSolr</literal></simpara></entry>
<entry align="left" valign="top"><simpara>List all search configurations and collections with a specified prefix.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">rebuildSearchIndex</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>RebuildSolrSearchIndex</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Starts an ICM job over the ICM Rest interface to rebuild all search indexes.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<simpara><xref linkend="PropertiesFile"/> and Image Properties</simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="99%, options="?>
<?dbfo table-width="99%, options="?>
<?dblatex table-width="99%, options="?>
<tgroup cols="3">
<colspec colname="col_1" colwidth="42.075*"/>
<colspec colname="col_2" colwidth="189.3375*"/>
<colspec colname="col_3" colwidth="189.3375*"/>
<thead>
<row>
<entry align="left" valign="top">Task</entry>
<entry align="left" valign="top">Property Key</entry>
<entry align="left" valign="top">Property Value</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top" morerows="1"><simpara>cleanUpSolr<?asciidoc-br?>
listSolr</simpara></entry>
<entry align="left" valign="top"><simpara><literal>solr.zooKeeperHostList</literal></simpara></entry>
<entry align="left" valign="top"><simpara>A list of all Zookeeper hosts with port and the Solr server prefix.<?asciidoc-br?>
e.g. zookeeper1:2181,zookeeper2:2181,zookeeper3:2181/solr</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>solr.clusterIndexPrefix</literal></simpara></entry>
<entry align="left" valign="top"><simpara>A simple installation specific prefix for the Solr search configuration, e.g. the hostname.</simpara></entry>
</row>
<row>
<entry align="left" valign="top" morerows="2"><simpara>rebuildSearchIndex</simpara></entry>
<entry align="left" valign="top"><simpara><literal>intershop.smc.admin.user.name</literal></simpara></entry>
<entry align="left" valign="top"><simpara>This is the ICM SMC admin user. Default: admin.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.smc.admin.user.password</literal></simpara></entry>
<entry align="left" valign="top"><simpara>This is the password of the SMC admin user.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>disable.ssl.verification</literal></simpara></entry>
<entry align="left" valign="top"><simpara>If no public SSL certificate is installed on the webserver, it is possible to disable the verification with the value <literal>true</literal>.</simpara></entry>
</row>
<row>
<entry align="left" valign="top" morerows="2"><simpara><emphasis role="strong">*</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>intershop.local.hostname</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The hostname or the IP of the local machine.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>webserver.http.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The exposed http port of the webserver.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>webserver.https.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The exposed https port of the webserver.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
</section>
<section xml:id="PropertiesFile">
<title>Configuration properties file</title>
<simpara>For the configuration on a special local machine it is necessary to provide an Intershop licence file and a
<literal>icm.properties</literal> file in file structure. It is possible to configure the location with environment properties.
This is a minimum set of properties.</simpara>
<simpara>icm.properties</simpara>
<programlisting language="properties" linenumbering="unnumbered"># database connection configuration
intershop.databaseType = oracle|mssql
intershop.jdbc.url = jdbc:oracle:thin:@host:1521:XE | jdbc:sqlserver://host:1433;databaseName=dbname
intershop.jdbc.user = user
intershop.jdbc.password = password

# webserver configuration of the appserver
intershop.WebServerURL=http://host:8080
intershop.WebServerSecureURL=https://host:8443

# webserver configuration
webserver.http.port = 8080
webserver.https.port = 8080

# database container configuration
intershop.db.mssql.dbname = dbname

# server configuration
intershop.servletEngine.connector.port = 7743

# local host configuration
# this is not always 'localhost'.
intershop.local.hostname = 192.168.2.205

# solr  configuiration
solr.zooKeeperHostList = jengsolr1.intershop.de:2181;jengsolr2.intershop.de:2181;jengsolr3.intershop.de:2181/solr8
solr.clusterIndexPrefix = devhost

intershop.smc.admin.user.name = admin
intershop.smc.admin.user.password = password

# disable the ssl verification of the webserver
disable.ssl.verification = true

# geb.local.environment = chromePC
# geb.local.driver = chromeDriver

# Readiness probe during startAS-task
# number of seconds between requests to http://&lt;hostname&gt;:&lt;port&gt;/status/ReadinessProbe (optional, default=30)
#intershop.as.readinessProbe.interval = 30
# max. number of seconds between start of probing and finally given up assuming that the start failed
# (optional, default=6000)
#intershop.as.readinessProbe.timeout = 30</programlisting>
</section>
<section xml:id="asciidoclicense">
<title>License</title>
<simpara>Copyright 2014-2020 Intershop Communications.</simpara>
<simpara>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at</simpara>
<simpara><link xl:href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</link></simpara>
<simpara>Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.</simpara>
</section>
</article>