<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright 2016 Red Hat, Inc. and/or its affiliates
    and other contributors as indicated by the @author tags.

    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

       http://www.apache.org/licenses/LICENSE-2.0

    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.

-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.hawkular.services</groupId>
    <artifactId>hawkular-services</artifactId>
    <version>0.0.9.Final</version>
  </parent>

  <artifactId>hawkular-services-dist-docker</artifactId>
  <packaging>pom</packaging>

  <properties>
    <docker-plugin.project.version>0.15.8</docker-plugin.project.version>
    <docker.base-image>jboss/wildfly:10.0.0.Final</docker.base-image>
    <docker.as.root>/opt/jboss/wildfly</docker.as.root>
    <docker.tag.prefix />
    <docker.tag.version>${project.version}</docker.tag.version>
    <docker.java.opts>-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n</docker.java.opts>
    <plexus-utils.version>3.0.15</plexus-utils.version>
    <alpn-boot.version>8.1.7.v20160121</alpn-boot.version>
    <version.cassandra>3.7</version.cassandra>
    <hawkular.agent.enabled>true</hawkular.agent.enabled>
  </properties>

  <name>Hawkular Services Docker Distribution</name>

  <dependencies>
    <dependency>
      <groupId>org.hawkular.services</groupId>
      <artifactId>hawkular-services-feature-pack</artifactId>
      <type>zip</type>
    </dependency>
    <dependency>
      <groupId>org.hawkular.services</groupId>
      <artifactId>hawkular-services-dist</artifactId>
      <type>zip</type>
    </dependency>

    <!-- http://mvnrepository.com/artifact/org.mortbay.jetty.alpn/alpn-boot -->
    <dependency>
      <groupId>org.mortbay.jetty.alpn</groupId>
      <artifactId>alpn-boot</artifactId>
      <version>${alpn-boot.version}</version>
    </dependency>

  </dependencies>

  <build>
    <plugins>

      <plugin>
        <!-- Create a link to the artifacts in ../dist -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-dist-delivery</id>
            <phase>package</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <mkdir dir="${project.build.directory}" />
                <symlink link="${project.build.directory}/${project.build.finalName}" resource="../../dist/target/hawkular-services-dist-${project.version}" />
              </target>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>io.fabric8</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <version>${docker-plugin.project.version}</version>
        <extensions>true</extensions> <!-- enables using 'docker' packaging above -->
        <dependencies>
          <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-utils</artifactId>
            <version>${plexus-utils.version}</version>
          </dependency>
          <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>19.0</version>
          </dependency>
        </dependencies>
        <configuration>
          <watchInterval>500</watchInterval>
          <logDate>default</logDate>
          <verbose>true</verbose>
          <autoPull>on</autoPull>
          <watchPostGoal>org.apache.maven.plugins:maven-help-plugin:help</watchPostGoal>
          <images>
            <!-- Docker Image to use -->
            <image>
              <alias>hawkular-services</alias>
              <name>${maven.username}/hawkular-services</name>
              <build>
                <from>${docker.base-image}</from>
                <maintainer>Heiko W. Rupp, hrupp@redhat.com</maintainer>
                <tags>
                  <tag>${docker.tag.prefix}latest</tag>
                  <tag>${docker.tag.prefix}${docker.tag.version}</tag>
                </tags>
                <ports>
                  <port>8080</port>
                  <port>8443</port>
                  <port>8787</port>
                </ports>
                <volumes>
                  <volume>/opt/data</volume>
                </volumes>
                <user>root</user>
                <env>
                  <HAWKULAR_BACKEND>cassandra</HAWKULAR_BACKEND>
                  <CASSANDRA_NODES>myCassandra</CASSANDRA_NODES>
                  <HAWKULAR_USER>jdoe</HAWKULAR_USER>
                  <HAWKULAR_PASSWORD>password</HAWKULAR_PASSWORD>
                  <HAWKULAR_AGENT_ENABLE>${hawkular.agent.enabled}</HAWKULAR_AGENT_ENABLE>
                  <AS_ROOT>${docker.as.root}</AS_ROOT>
                  <JAVA_OPS>${docker.java.opts}</JAVA_OPS>
                </env>
                <cmd>
                  <shell>/opt/hawkular/bin/startcmd.sh</shell>
                </cmd>
                <assembly>
                  <basedir>/</basedir>
                  <descriptor>docker-assembly.xml</descriptor>
                </assembly>
              </build>
              <run>
                <namingStrategy>none</namingStrategy>
                <volumes>
                  <bind>
                    <volume>/tmp/opt/hawkular/server:/opt/data</volume>
                  </bind>
                </volumes>
                <env>
                  <HAWKULAR_BACKEND>remote</HAWKULAR_BACKEND>
                  <CASSANDRA_NODES>myCassandra</CASSANDRA_NODES>
                </env>
                <ports>
                  <port>8080:8080</port>
                  <port>8443:8443</port>
                  <port>8787:8787</port>
                </ports>
                <links>
                  <link>myCassandra</link>
                </links>
                <log>
                  <enabled>true</enabled>
                  <color>red</color>
                </log>
              </run>
              <watch>
                <mode>none</mode>
              </watch>
            </image>
            <!-- A cassandra container that is used as backend storage -->
            <image>
              <alias>myCassandra</alias>
              <name>cassandra:${version.cassandra}</name>
              <run>
                <env>
                  <CASSANDRA_START_RPC>true</CASSANDRA_START_RPC>
                </env>
                <volumes>
                  <bind>
                    <volume>/tmp/opt/hawkular/cassandra:/var/lib/cassandra</volume>
                  </bind>
                </volumes>
              </run>
            </image>
          </images>
        </configuration>
      </plugin>

      <plugin>
        <groupId>com.mycila</groupId>
        <artifactId>license-maven-plugin</artifactId>
        <configuration>
          <excludes combine.children="append">
            <exclude>src/main/resources/**/*.css</exclude>
            <exclude>.dockerignore</exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>


</project>
