Configure docker settings 41/95041/1
authorJimmy Forsyth <jf2512@att.com>
Thu, 5 Sep 2019 13:27:50 +0000 (09:27 -0400)
committerJimmy Forsyth <jf2512@att.com>
Thu, 5 Sep 2019 13:27:51 +0000 (09:27 -0400)
Issue-ID: INT-761
Change-Id: Ief98dfcb58bd204288d5b8a263365b573fc62163
Signed-off-by: Jimmy Forsyth <jf2512@att.com>
aai-resources/pom.xml
aai-resources/src/main/docker/Dockerfile
aai-resources/src/main/docker/aai.sh

index 5fd4698..6960476 100644 (file)
@@ -74,6 +74,7 @@
         <janino.version>2.7.8</janino.version>
         <google.guava.version>19.0</google.guava.version>
         <janusgraph.version>0.2.3</janusgraph.version>
+        <jnr.ffi.version>2.1.9</jnr.ffi.version>
         <gremlin.driver.version>3.2.2</gremlin.driver.version>
         <gremlin.core.version>3.2.2</gremlin.core.version>
         <gremlin.version>3.2.2</gremlin.version>
 
         <eclipse.jetty.version>9.4.1.v20170120</eclipse.jetty.version>
 
-        <docker.fabric.version>0.23.0</docker.fabric.version>
+        <docker.fabric.version>0.28.0</docker.fabric.version>
         <!-- Default docker registry that maven fabric plugin will try to pull from -->
         <docker.registry>docker.io</docker.registry>
         <!-- Specifying the docker push registry where the image should be pushed -->
         <!-- This value should be overwritten at runtime to wherever need to be pushed to -->
         <docker.push.registry>localhost:5000</docker.push.registry>
+        <aai.docker.version>1.0.0</aai.docker.version>
+        <aai.base.image>alpine</aai.base.image>
+        <aai.base.image.version>1.6.0</aai.base.image.version>
 
         <!--
              Location where assembly of our scripts, resources and main jar will be held
             <id>docker</id>
             <build>
                 <plugins>
+                    <plugin>
+                        <groupId>org.codehaus.groovy.maven</groupId>
+                        <artifactId>gmaven-plugin</artifactId>
+                        <version>1.0</version>
+                        <executions>
+                            <execution>
+                                <phase>pre-clean</phase>
+                            </execution>
+                            <execution>
+                                <id>parse-base</id>
+                                <phase>prepare-package</phase>
+                                <goals>
+                                    <goal>execute</goal>
+                                </goals>
+                                <configuration>
+                                    <source>
+                                        def userAaiBaseImage = session.userProperties['aai.base.image']
+                                        def userAaiCommonVersion = session.userProperties['aai.base.image.version']
+                                        if (userAaiCommonVersion != null) {
+                                            project.properties['aai.base.image.version'] = userAaiCommonVersion
+                                        }
+                                        if (userAaiBaseImage != null) {
+                                            project.properties['aai.base.image'] = userAaiBaseImage
+                                        }
+                                        log.info 'Base image flavour: ' + project.properties['aai.base.image']
+                                        log.info 'Base image version: ' + project.properties['aai.base.image.version']
+                                    </source>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
                     <plugin>
                         <groupId>io.fabric8</groupId>
                         <artifactId>docker-maven-plugin</artifactId>
                             <apiVersion>1.23</apiVersion>
                             <images>
                                 <image>
-                                    <name>${docker.push.registry}/${aai.docker.namespace}/${project.artifactId}:%l</name>
+                                    <name>${docker.push.registry}/${aai.docker.namespace}/${project.artifactId}:%l
+                                    </name>
                                     <build>
                                         <filter>@</filter>
                                         <tags>
                 </exclusion>
             </exclusions>
         </dependency>
+        <!--
+            indirect janusgraph-cassandra dependency
+            need to be newer than default one
+            in order to support multiple cpu archs
+        -->
+        <dependency>
+            <groupId>com.github.jnr</groupId>
+            <artifactId>jnr-ffi</artifactId>
+            <version>${jnr.ffi.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.janusgraph</groupId>
             <artifactId>janusgraph-cql</artifactId>
index e6d9d6f..1c17a75 100644 (file)
@@ -1,17 +1,4 @@
-FROM aaionap/aai-common:1.3.0
-
-
-# Add the proper files into the docker image from your build
-WORKDIR /opt/app/aai-resources
-
-# Expose the ports for outside linux to use
-# 8447 is the important one to be used
-EXPOSE 8447
-
-
-HEALTHCHECK --interval=40s --timeout=10s --retries=3 CMD nc -z -v localhost ${SERVER_PORT:-8447} || exit 1
-
-ENTRYPOINT ["/bin/bash", "/opt/app/aai-resources/docker-entrypoint.sh"]
+FROM @aai.docker.namespace@/aai-common-@aai.base.image@:@aai.base.image.version@
 
 RUN  mkdir -p /opt/aaihome/aaiadmin /opt/aai/logroot/AAI-RES
 
@@ -19,6 +6,14 @@ VOLUME /opt/aai/logroot/AAI-RES
 VOLUME /tmp
 VOLUME /opt/tools
 
+HEALTHCHECK --interval=40s --timeout=10s --retries=3 CMD nc -z -v localhost ${SERVER_PORT:-8447} || exit 1
+
+# Add the proper files into the docker image from your build
+WORKDIR /opt/app/aai-resources
 COPY /maven/aai-resources/ .
 
 ENV AAI_BUILD_VERSION @aai.docker.version@
+# Expose the ports for outside linux to use
+# 8447 is the important one to be used
+EXPOSE 8447
+ENTRYPOINT ["/bin/bash", "/opt/app/aai-resources/docker-entrypoint.sh"]
\ No newline at end of file
index 2e2c35f..11b9c85 100644 (file)
 # ECOMP is a trademark and service mark of AT&T Intellectual Property.
 #
 
-PROJECT_HOME=/opt/app/aai-resources
-export PROJECT_HOME
-
-JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
-export JAVA_HOME
-
-AAIENV=dev
-export AAIENV
-
-PATH=/usr/lib/jvm/java-8-openjdk-amd64:$PATH
-
-PROJECT_OWNER=aaiadmin
-PROJECT_GROUP=aaiadmin
-PROJECT_UNIXHOMEROOT=/opt/aaihome
-export PROJECT_OWNER PROJECT_GROUP PROJECT_UNIXHOMEROOT
-umask 0022
-
+# set system related env
+# and make script compatible both with ubuntu and alpine base images
+# jre-alpine image has $JAVA_HOME set and added to $PATH
+# ubuntu image requires to set $JAVA_HOME and add java to $PATH manually
+if [ -z $JAVA_HOME ] && [ $(grep -i "ID=ubuntu" /etc/os-release | wc -w) -eq 1 ] ; then
+    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-`dpkg --print-architecture | awk -F- '{ print $NF }'`
+    export PATH=$PATH:${JAVA_HOME}/jre/bin:${JAVA_HOME}/bin
+fi
+
+# set app related env
+export PROJECT_HOME=/opt/app/aai-resources
+export AAIENV=dev
+export PROJECT_OWNER=aaiadmin
+export PROJECT_GROUP=aaiadmin
+export PROJECT_UNIXHOMEROOT=/opt/aaihome
 export idns_api_url=
 export idnscred=
 export idnstenant=
-
-
+umask 0022