<?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>2020-11-24</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.0'
    id 'com.intershop.gradle.icm.docker' version '{latestRevision}'
}

docker {
    registryCredentials {
        url = "https://&lt;registry hostname&gt;"
        username = "&lt;registry user name&gt;"
        password = "&lt;registry user password&gt;"
        email = "&lt;registry user email&gt;"
    }
}

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

intershop_docker {
    images {
        icmsetup = 'registry.intershop.de/intershop/icm-base:1.9.2'

        webadapter = 'registry.intershop.de/intershop/icm-webadapter:2.0.6'
        webadapteragent = 'registry.intershop.de/intershop/icm-webadapteragent:3.0.4'

        mssql = '&lt;image with an prepares installation for Intershop&gt;'
        oracle = '&lt;image with an prepares installation for Intershop&gt;'

        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
            }
            initImage {
                dockerfile = file('docker/init/Dockerfile')
                addFiles(tasks.createInitPkg.outputs.files)
                dockerBuildDir = 'init'
                description = 'Init Container'
                enabled = true
            }
            testImage {
                dockerfile = file('docker/test/Dockerfile')
                addFiles(tasks.createTestPkg.outputs.files)
                dockerBuildDir = 'test'
                description = 'AppServer Test Container'
                enabled = true
            }
            initTestImage {
                dockerfile = file('docker/initTest/Dockerfile')
                addFiles(tasks.createInitTestPkg.outputs.files)
                dockerBuildDir = 'inittest'
                description = 'Test Init Conainer'
                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 "2.2.0"
    id("com.intershop.gradle.icm.docker") version "{latestRevision}"
}

docker {
    registryCredentials {
        url.set("https://&lt;registry hostname&gt;")
        username.set("&lt;registry user name&gt;")
        password.set("&lt;registry user password&gt;")
        email.set("&lt;registry user email&gt;")
    }
}

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

intershop_docker {
    images {
        icmsetup.set("docker-public.rnd.intershop.de/intershop/icm-base:1.9.2")

        webadapter.set("docker-public.rnd.intershop.de/intershop/icm-webadapter:2.0.6")
        webadapteragent.set("docker-public.rnd.intershop.de/intershop/icm-webadapteragent:3.0.4")

        mssqldb.set("&lt;image with an prepares installation for Intershop&gt;")
        oracle.set("&lt;image with an prepares installation for Intershop&gt;")

        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)
            }
            initImage {
                dockerfile.set(file("docker/init/Dockerfile"))
                addFiles(tasks.createInitPkg.get().outputs.files)
                dockerBuildDir.set("init")
                description.set("Init 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)
            }
            initTestImage {
                dockerfile.set(file("docker/initTest/Dockerfile"))
                addFiles(tasks.createInitTestPkg.get().outputs.files)
                dockerBuildDir.set("inittest")
                description.set("Test Init Conainer")
                enabled.set(true)
            }
        }
    }
}</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>
</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>icmsetup</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-base:latest</literal></simpara></entry>
<entry align="left" valign="top"><simpara>This image is used as a base image for the most ICM images.</simpara></entry>
</row>
<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>
</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>
<row>
<entry align="left" valign="top"><simpara><literal>initImage</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 init image for the ICM application server.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>initTestImage</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 init image. This image uses the init 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="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">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">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>
</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>
<simpara><xref linkend="PropertiesFile"/> and Image Properties</simpara>
<simpara>There are no special configuration properties for the mail server.
The SMTP port is 25 and the web interface listened on 8025. Mails are stored
in the build directory <literal>mailoutput</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="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="4"><simpara>MSSQL</simpara></entry>
<entry align="left" valign="top"><simpara><literal>intershop.db.mssql.hostport</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Exposed port of the database<?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>Name of the admin password. Default value is "1ntershop5A".</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.db.mssql.recreatedb</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The db will be recreated after a restart if the value is true. Default value is "false".</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.db.mssql.recreateuser</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The db will be recreated after a restart if the value is true. Default value is "false".</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 database. Default is "icmtestdb"</simpara></entry>
</row>
<row>
<entry align="left" valign="top" morerows="1"><simpara>Oracle</simpara></entry>
<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>
</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>
</row>
<row>
<entry align="left" valign="top" morerows="2"><simpara>WA</simpara></entry>
<entry align="left" valign="top"><simpara><literal>webserver.http.port</literal></simpara></entry>
<entry align="left" valign="top"><simpara>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>Exposed https port of the webserver.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><literal>intershop.local.hostname</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Hostname or IP of the local host. This is used for the connection between WA and AS on the local host.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
</section>
<section xml:id="asciidocintershop-commerce-management-project-docker-plugin">
<title>Intershop Commerce Management Project Docker Plugin</title>
<simpara>This plugin configures additional tasks of an Intershop Commerce Management customer project. It uses the same Gradle
configuration like the Docker Plugin. With this plugin additional task will be configured and the task dependencies are
adapted for the development process.</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>icminit</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-init:latest</literal></simpara></entry>
<entry align="left" valign="top"><simpara>This image is used as a base image for ICM application server initialization image.</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>
</tbody>
</tgroup>
</informaltable>
</section>
</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="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">*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">*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>These tasks 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>
</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-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="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() {
        @Override
        String getId() {
            return networkId
        }

        @Override
        void close() throws Exception {}

        @Override
        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-4">
<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-5">
<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 maschine it is necessary to provide an Intershop licence file and a
<literal>imc.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</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>