diff options
author | sandovalfr <frank.sandoval@oamtechnologies.com> | 2019-03-04 09:31:59 -0500 |
---|---|---|
committer | sandovalfr <frank.sandoval@oamtechnologies.com> | 2019-03-21 10:57:48 -0600 |
commit | efad46124485f1572765fad05284d8a070fb9277 (patch) | |
tree | 39f8e035b70244daf1c943674a6158e337e85d99 | |
parent | 4f1d5968c50f43d7443d4ad7fcfb49d019fd5cde (diff) |
small, multi-platform docker images
Issue-ID: INT-907
Issue-ID: INT-908
Issue-ID: INT-909
Change-Id: I2df861f0098588ec9b394b501af2de6f7559c213
Signed-off-by: sandovalfr <frank.sandoval@oamtechnologies.com>
-rw-r--r-- | README.md | 40 | ||||
-rw-r--r-- | datarouter-docker-compose/pom.xml | 2 | ||||
-rwxr-xr-x | datarouter-node/pom.xml | 159 | ||||
-rw-r--r-- | datarouter-node/src/main/resources/docker/Dockerfile | 34 | ||||
-rwxr-xr-x | datarouter-prov/pom.xml | 136 | ||||
-rw-r--r-- | datarouter-prov/src/main/resources/docker/Dockerfile | 33 | ||||
-rwxr-xr-x | datarouter-subscriber/pom.xml | 121 | ||||
-rw-r--r-- | datarouter-subscriber/src/main/resources/docker/Dockerfile | 31 | ||||
-rwxr-xr-x | pom.xml | 13 |
9 files changed, 435 insertions, 134 deletions
@@ -144,4 +144,44 @@ MariaDB - 10.2.14 Self Signed SSL certificates
+## This section describes how to build and test datarouter containers on a host such as
+a laptop or remote server.
+
+- Install git, maven, docker
+ - See https://wiki.onap.org/display/DW/Setting+Up+Your+Development+Environment
+ - See https://docs.docker.com/install/
+
+### Build
+- in terminal
+> git clone https://gerrit.onap.org/r/dmaap/datarouter
+> cd datarouter
+> mvn clean install -DskipTests -Pdocker
+> docker images
+REPOSITORY TAG IMAGE ID CREATED SIZE
+nexus3.onap.org:10003/onap/dmaap/datarouter-subscriber 2.0.0-SNAPSHOT 0dfc99a7612c 13 seconds ago 99.2MB
+nexus3.onap.org:10003/onap/dmaap/datarouter-subscriber latest 0dfc99a7612c 13 seconds ago 99.2MB
+nexus3.onap.org:10003/onap/dmaap/datarouter-node 2.0.0-SNAPSHOT 6573f4bdc310 27 seconds ago 116MB
+nexus3.onap.org:10003/onap/dmaap/datarouter-node latest 6573f4bdc310 27 seconds ago 116MB
+nexus3.onap.org:10003/onap/dmaap/datarouter-prov 2.0.0-SNAPSHOT 9e4148737c18 47 seconds ago 148MB
+nexus3.onap.org:10003/onap/dmaap/datarouter-prov latest 9e4148737c18 47 seconds ago 148MB
+openjdk 8-jre-alpine 1b46cc2ba839 3 weeks ago 85MB
+nexus3.onap.org:10001/openjdk 8-jre-alpine 1b46cc2ba839 3 weeks ago 85MB
+
+### Test
+> cd datarouter-docker-compose/src/main/resources
+- edit docker-compose, change nexus 0001 (remote pull repo) to 0003 (local build)
+> docker-compose up
+
+- terminal 2
+> docker container ls -a
+CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
+c193317ec860 nexus3.onap.org:10003/onap/dmaap/datarouter-node "sh startup.sh" About a minute ago Up About a minute 0.0.0.0:9090->8080/tcp, 0.0.0.0:9443->8443/tcp datarouter-node
+e8dab741550e nexus3.onap.org:10003/onap/dmaap/datarouter-prov "sh startup.sh" About a minute ago Up About a minute (healthy) 0.0.0.0:8080->8080/tcp, 0.0.0.0:8443->8443/tcp, 0.0.0.0:443->8443/tcp datarouter-prov
+cf0e996f0f31 nexus3.onap.org:10003/onap/dmaap/datarouter-subscriber "sh startup.sh" About a minute ago Up About a minute 8080/tcp, 0.0.0.0:7070->7070/tcp, 8443/tcp subscriber-node
+73affb6364f9 mariadb:10.2.14 "docker-entrypoint.s…" About a minute ago Up About a minute (healthy) 0.0.0.0:3306->3306/tcp mariadb
+
+> docker exec -it datarouter-node /bin/sh
+ # curl http://dmaap-dr-prov:8080/internal/prov
+> docker exec -it datarouter-prov /bin/sh
+ # curl -v -X POST -H "Content-Type : application/vnd.dmaap-dr.feed" -H "X-DMAAP-DR-ON-BEHALF-OF: rs873m" --data-ascii @/opt/app/datartr/addFeed3.txt --post301 --location-trusted -k https://dmaap-dr-prov:8443
diff --git a/datarouter-docker-compose/pom.xml b/datarouter-docker-compose/pom.xml index 21da42f4..73e8c7e6 100644 --- a/datarouter-docker-compose/pom.xml +++ b/datarouter-docker-compose/pom.xml @@ -26,7 +26,7 @@ <parent> <groupId>org.onap.dmaap.datarouter</groupId> <artifactId>parent</artifactId> - <version>2.0.1-SNAPSHOT</version> + <version>2.0.2-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> <artifactId>datarouter-docker-compose</artifactId> diff --git a/datarouter-node/pom.xml b/datarouter-node/pom.xml index f722c790..3e75e88c 100755 --- a/datarouter-node/pom.xml +++ b/datarouter-node/pom.xml @@ -26,7 +26,7 @@ <parent> <groupId>org.onap.dmaap.datarouter</groupId> <artifactId>parent</artifactId> - <version>2.0.1-SNAPSHOT</version> + <version>2.0.2-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> <artifactId>datarouter-node</artifactId> @@ -38,6 +38,10 @@ <sonar.jacoco.reportMissing.force.zero>true</sonar.jacoco.reportMissing.force.zero> <sitePath>/content/sites/site/${project.groupId}/${project.artifactId}/${project.version}</sitePath> <docker.location>${basedir}/target/${artifactId}</docker.location> + + <timestamp>${maven.build.timestamp}</timestamp> + <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format> + <datarouter.node.image.name>onap/dmaap/datarouter-node</datarouter.node.image.name> </properties> <dependencies> @@ -226,40 +230,78 @@ </properties> <build> <plugins> + + <!-- Setup image tags per https://wiki.onap.org/display/DW/Independent+Versioning+and+Release+Process#IndependentVersioningandReleaseProcess-StandardizedDockerTagging --> <plugin> - <groupId>com.spotify</groupId> + <groupId>org.codehaus.groovy.maven</groupId> + <artifactId>gmaven-plugin</artifactId> + <executions> + <execution> + <phase>validate</phase> + <goals> + <goal>execute</goal> + </goals> + <configuration> + <properties> + <ver>${project.version}</ver> + <timestamp>${maven.build.timestamp}</timestamp> + </properties> + <source> + println 'ver: ' + project.properties['ver']; + if ( project.properties['ver'].endsWith("-SNAPSHOT") ) { + project.properties['dockertag1']=project.properties['ver'] + "-latest"; + project.properties['dockertag2']=project.properties['ver'] + "-" + project.properties['timestamp']; + } else { + project.properties['dockertag1']=project.properties['ver'] + "-STAGING-latest"; + project.properties['dockertag2']=project.properties['ver'] + "-STAGING-" + project.properties['timestamp']; + } + println 'docker tag 1: ' + project.properties['dockertag1']; + println 'docker tag 2: ' + project.properties['dockertag2']; + </source> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> - <version>${docker.maven.plugin.version}</version> + <version>0.28.0</version> <configuration> - <imageName>${onap.nexus.dockerregistry.daily}/${datarouter.node.image.name}</imageName> - <baseImage>java:8</baseImage> - <serverId>${onap.nexus.dockerregistry.daily}</serverId> - <skipDockerBuild>false</skipDockerBuild> - <imageTags> - <imageTag>${project.version}</imageTag> - <imageTag>latest</imageTag> - </imageTags> - <forceTags>true</forceTags> - <entryPoint>["/startup.sh", "start"]</entryPoint> - <resources> - <resource> - <targetPath>/opt</targetPath> - <directory>${project.build.directory}/opt</directory> - </resource> - <resource> - <targetPath>/</targetPath> - <directory>${docker.location}</directory> - <include>startup.sh</include> - </resource> - </resources> - <runs> - <run>chmod 0700 /startup.sh</run> - </runs> - <exposes> - <expose>8080</expose> - <expose>8443</expose> - </exposes> + <verbose>${docker.verbose}</verbose> + <apiVersion>${docker.apiVersion}</apiVersion> + <pullRegistry>${docker.pull.registry}</pullRegistry> + <pushRegistry>${docker.push.registry}</pushRegistry> + <images> + <image> + <name>${datarouter.node.image.name}</name> + <build> + <cleanup>try</cleanup> + <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir> + <dockerFile>Dockerfile</dockerFile> + <tags> + <tag>${dockertag1}</tag> + <tag>${dockertag2}</tag> + </tags> + </build> + </image> + </images> </configuration> + <executions> + <execution> + <id>generate-images</id> + <phase>install</phase> + <goals> + <goal>build</goal> + </goals> + </execution> + <execution> + <id>push-images</id> + <phase>deploy</phase> + <goals> + <goal>push</goal> + </goals> + </execution> + </executions> </plugin> </plugins> </build> @@ -308,7 +350,7 @@ <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> - <outputDirectory>${basedir}/target/opt/app/datartr/lib</outputDirectory> + <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr/lib</outputDirectory> <archive> <manifest> <addClasspath>true</addClasspath> @@ -335,12 +377,12 @@ <executions> <execution> <id>copy-docker-file</id> - <phase>package</phase> + <phase>validate</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> - <outputDirectory>${docker.location}</outputDirectory> + <outputDirectory>${basedir}/target/docker-stage</outputDirectory> <overwrite>true</overwrite> <resources> <resource> @@ -354,13 +396,33 @@ </configuration> </execution> <execution> - <id>copy-resources</id> + <id>copy-startup-script</id> + <phase>validate</phase> + <goals> + <goal>copy-resources</goal> + </goals> + <configuration> + <outputDirectory>${basedir}/target/docker-stage/opt</outputDirectory> + <overwrite>true</overwrite> + <resources> + <resource> + <directory>${basedir}/src/main/resources/docker</directory> + <filtering>true</filtering> + <includes> + <include>startup.sh</include> + </includes> + </resource> + </resources> + </configuration> + </execution> + <execution> + <id>copy-resources-2</id> <phase>validate</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> - <outputDirectory>${basedir}/target/opt/app/datartr/etc</outputDirectory> + <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr/etc</outputDirectory> <resources> <resource> <directory>${basedir}/src/main/resources</directory> @@ -373,13 +435,32 @@ </configuration> </execution> <execution> - <id>copy-resources-1</id> + <id>copy-resources-3</id> + <phase>validate</phase> + <goals> + <goal>copy-resources</goal> + </goals> + <configuration> + <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr</outputDirectory> + <resources> + <resource> + <directory>${basedir}/data</directory> + <includes> + <include>misc/**</include> + <include>**/**</include> + </includes> + </resource> + </resources> + </configuration> + </execution> + <execution> + <id>copy-resources-4</id> <phase>validate</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> - <outputDirectory>${basedir}/target/opt/app/datartr/aaf_certs</outputDirectory> + <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr/aaf_certs</outputDirectory> <resources> <resource> <directory>${basedir}/aaf_certs</directory> @@ -405,7 +486,7 @@ <goal>copy-dependencies</goal> </goals> <configuration> - <outputDirectory>${project.build.directory}/opt/app/datartr/lib</outputDirectory> + <outputDirectory>${project.build.directory}/docker-stage/opt/app/datartr/lib</outputDirectory> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>false</overWriteSnapshots> <overWriteIfNewer>true</overWriteIfNewer> diff --git a/datarouter-node/src/main/resources/docker/Dockerfile b/datarouter-node/src/main/resources/docker/Dockerfile new file mode 100644 index 00000000..39007732 --- /dev/null +++ b/datarouter-node/src/main/resources/docker/Dockerfile @@ -0,0 +1,34 @@ +######### +# ============LICENSE_START==================================================== +# org.onap.dmaap +# =========================================================================== +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# Modifications Copyright (C) 2018 Nokia. All rights reserved. +# =========================================================================== +# 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. +# ============LICENSE_END==================================================== +# +FROM openjdk:8-jre-alpine + +MAINTAINER DMAAP Team + +COPY /opt /opt + +# curl used for healthcheck +CMD apt update && apt add curl + +EXPOSE 8080 8443 + +WORKDIR /opt +RUN chmod 0700 startup.sh +ENTRYPOINT ["sh", "startup.sh"] diff --git a/datarouter-prov/pom.xml b/datarouter-prov/pom.xml index cfa41441..44f70f5f 100755 --- a/datarouter-prov/pom.xml +++ b/datarouter-prov/pom.xml @@ -26,7 +26,7 @@ <parent>
<groupId>org.onap.dmaap.datarouter</groupId>
<artifactId>parent</artifactId>
- <version>2.0.1-SNAPSHOT</version>
+ <version>2.0.2-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>datarouter-prov</artifactId>
@@ -41,6 +41,12 @@ <docker.location>${basedir}/target/${artifactId}</docker.location>
<datarouter.prov.image.name>onap/dmaap/datarouter-prov</datarouter.prov.image.name>
+
+ <timestamp>${maven.build.timestamp}</timestamp>
+ <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
+
+ <docker.verbose>true</docker.verbose>
+ <docker.apiVersion>1.23</docker.apiVersion>
</properties>
<dependencies>
<dependency>
@@ -264,40 +270,78 @@ </properties>
<build>
<plugins>
+
+ <!-- Setup image tags per https://wiki.onap.org/display/DW/Independent+Versioning+and+Release+Process#IndependentVersioningandReleaseProcess-StandardizedDockerTagging -->
+ <plugin>
+ <groupId>org.codehaus.groovy.maven</groupId>
+ <artifactId>gmaven-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <properties>
+ <ver>${project.version}</ver>
+ <timestamp>${maven.build.timestamp}</timestamp>
+ </properties>
+ <source>
+ println 'ver: ' + project.properties['ver'];
+ if ( project.properties['ver'].endsWith("-SNAPSHOT") ) {
+ project.properties['dockertag1']=project.properties['ver'] + "-latest";
+ project.properties['dockertag2']=project.properties['ver'] + "-" + project.properties['timestamp'];
+ } else {
+ project.properties['dockertag1']=project.properties['ver'] + "-STAGING-latest";
+ project.properties['dockertag2']=project.properties['ver'] + "-STAGING-" + project.properties['timestamp'];
+ }
+ println 'docker tag 1: ' + project.properties['dockertag1'];
+ println 'docker tag 2: ' + project.properties['dockertag2'];
+ </source>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
<plugin>
- <groupId>com.spotify</groupId>
+ <groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
- <version>1.0.0</version>
+ <version>0.28.0</version>
<configuration>
- <imageName>${onap.nexus.dockerregistry.daily}/${datarouter.prov.image.name}</imageName>
- <baseImage>java:8</baseImage>
- <serverId>${onap.nexus.dockerregistry.daily}</serverId>
- <skipDockerBuild>false</skipDockerBuild>
- <imageTags>
- <imageTag>${project.version}</imageTag>
- <imageTag>latest</imageTag>
- </imageTags>
- <forceTags>true</forceTags>
- <entryPoint>["/startup.sh", "start"]</entryPoint>
- <resources>
- <resource>
- <targetPath>/opt</targetPath>
- <directory>${project.build.directory}/opt</directory>
- </resource>
- <resource>
- <targetPath>/</targetPath>
- <directory>${docker.location}</directory>
- <include>startup.sh</include>
- </resource>
- </resources>
- <runs>
- <run>chmod 0700 /startup.sh</run>
- </runs>
- <exposes>
- <expose>8080</expose>
- <expose>8443</expose>
- </exposes>
+ <verbose>${docker.verbose}</verbose>
+ <apiVersion>${docker.apiVersion}</apiVersion>
+ <pullRegistry>${docker.pull.registry}</pullRegistry>
+ <pushRegistry>${docker.push.registry}</pushRegistry>
+ <images>
+ <image>
+ <name>${datarouter.prov.image.name}</name>
+ <build>
+ <cleanup>try</cleanup>
+ <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>
+ <dockerFile>Dockerfile</dockerFile>
+ <tags>
+ <tag>${dockertag1}</tag>
+ <tag>${dockertag2}</tag>
+ </tags>
+ </build>
+ </image>
+ </images>
</configuration>
+ <executions>
+ <execution>
+ <id>generate-images</id>
+ <phase>install</phase>
+ <goals>
+ <goal>build</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>push-images</id>
+ <phase>deploy</phase>
+ <goals>
+ <goal>push</goal>
+ </goals>
+ </execution>
+ </executions>
</plugin>
</plugins>
</build>
@@ -350,7 +394,7 @@ <descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
- <outputDirectory>${basedir}/target/opt/app/datartr/lib</outputDirectory>
+ <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr/lib</outputDirectory>
<archive>
<manifest>
<addClasspath>true</addClasspath>
@@ -379,43 +423,47 @@ </configuration>
<version>3.6.0</version>
</plugin>
+
+ <!-- Copy files to docker-stage to be included in image -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
- <id>copy-docker-file</id>
- <phase>package</phase>
+ <id>copy-dockerfile</id>
+ <phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
- <outputDirectory>${docker.location}</outputDirectory>
+ <outputDirectory>${basedir}/target/docker-stage</outputDirectory>
<overwrite>true</overwrite>
<resources>
<resource>
<directory>${basedir}/src/main/resources/docker</directory>
<filtering>true</filtering>
<includes>
- <include>**/*</include>
+ <include>Dockerfile</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
<execution>
- <id>copy-resources-1</id>
+ <id>copy-startup-script</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
- <outputDirectory>${basedir}/target/opt/app/datartr/lib</outputDirectory>
+ <outputDirectory>${basedir}/target/docker-stage/opt</outputDirectory>
+ <overwrite>true</overwrite>
<resources>
<resource>
- <directory>${project.basedir}/src/main/resources</directory>
+ <directory>${basedir}/src/main/resources/docker</directory>
+ <filtering>true</filtering>
<includes>
- <include>**/*.jar</include>
+ <include>startup.sh</include>
</includes>
</resource>
</resources>
@@ -428,7 +476,7 @@ <goal>copy-resources</goal>
</goals>
<configuration>
- <outputDirectory>${basedir}/target/opt/app/datartr/etc</outputDirectory>
+ <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr/etc</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
@@ -447,7 +495,7 @@ <goal>copy-resources</goal>
</goals>
<configuration>
- <outputDirectory>${basedir}/target/opt/app/datartr</outputDirectory>
+ <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr</outputDirectory>
<resources>
<resource>
<directory>${basedir}/data</directory>
@@ -466,7 +514,7 @@ <goal>copy-resources</goal>
</goals>
<configuration>
- <outputDirectory>${basedir}/target/opt/app/datartr/aaf_certs</outputDirectory>
+ <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr/aaf_certs</outputDirectory>
<resources>
<resource>
<directory>${basedir}/aaf_certs</directory>
@@ -492,7 +540,7 @@ <goal>copy-dependencies</goal>
</goals>
<configuration>
- <outputDirectory>${project.build.directory}/opt/app/datartr/lib</outputDirectory>
+ <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr/aaf_certs</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
diff --git a/datarouter-prov/src/main/resources/docker/Dockerfile b/datarouter-prov/src/main/resources/docker/Dockerfile new file mode 100644 index 00000000..b11925a0 --- /dev/null +++ b/datarouter-prov/src/main/resources/docker/Dockerfile @@ -0,0 +1,33 @@ +######### +# ============LICENSE_START==================================================== +# org.onap.dmaap +# =========================================================================== +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# Modifications Copyright (C) 2018 Nokia. All rights reserved. +# =========================================================================== +# 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. +# ============LICENSE_END==================================================== +# +FROM openjdk:8-jre-alpine + +MAINTAINER DMAAP Team + +COPY /opt /opt + +RUN apk update && apk add curl + +EXPOSE 8080 8443 + +WORKDIR /opt +RUN chmod 0700 startup.sh +ENTRYPOINT ["sh", "startup.sh"] diff --git a/datarouter-subscriber/pom.xml b/datarouter-subscriber/pom.xml index d89bcb9a..1f58c42c 100755 --- a/datarouter-subscriber/pom.xml +++ b/datarouter-subscriber/pom.xml @@ -26,7 +26,7 @@ <parent> <groupId>org.onap.dmaap.datarouter</groupId> <artifactId>parent</artifactId> - <version>2.0.1-SNAPSHOT</version> + <version>2.0.2-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> <artifactId>datarouter-subscriber</artifactId> @@ -40,6 +40,9 @@ <docker.location>${basedir}/target/${artifactId}</docker.location> <datarouter.prov.image.name>onap/dmaap/datarouter-subscriber</datarouter.prov.image.name> + + <timestamp>${maven.build.timestamp}</timestamp> + <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format> </properties> <dependencies> <dependency> @@ -163,40 +166,78 @@ </properties> <build> <plugins> + + <!-- Setup image tags per https://wiki.onap.org/display/DW/Independent+Versioning+and+Release+Process#IndependentVersioningandReleaseProcess-StandardizedDockerTagging --> + <plugin> + <groupId>org.codehaus.groovy.maven</groupId> + <artifactId>gmaven-plugin</artifactId> + <executions> + <execution> + <phase>validate</phase> + <goals> + <goal>execute</goal> + </goals> + <configuration> + <properties> + <ver>${project.version}</ver> + <timestamp>${maven.build.timestamp}</timestamp> + </properties> + <source> + println 'ver: ' + project.properties['ver']; + if ( project.properties['ver'].endsWith("-SNAPSHOT") ) { + project.properties['dockertag1']=project.properties['ver'] + "-latest"; + project.properties['dockertag2']=project.properties['ver'] + "-" + project.properties['timestamp']; + } else { + project.properties['dockertag1']=project.properties['ver'] + "-STAGING-latest"; + project.properties['dockertag2']=project.properties['ver'] + "-STAGING-" + project.properties['timestamp']; + } + println 'docker tag 1: ' + project.properties['dockertag1']; + println 'docker tag 2: ' + project.properties['dockertag2']; + </source> + </configuration> + </execution> + </executions> + </plugin> <plugin> - <groupId>com.spotify</groupId> + <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> - <version>${docker.maven.plugin.version}</version> + <version>0.28.0</version> <configuration> - <imageName>${onap.nexus.dockerregistry.daily}/${datarouter.prov.image.name}</imageName> - <baseImage>java:8</baseImage> - <serverId>${onap.nexus.dockerregistry.daily}</serverId> - <skipDockerBuild>false</skipDockerBuild> - <imageTags> - <imageTag>${project.version}</imageTag> - <imageTag>latest</imageTag> - </imageTags> - <forceTags>true</forceTags> - <entryPoint>["/startup.sh", "start"]</entryPoint> - <resources> - <resource> - <targetPath>/opt</targetPath> - <directory>${project.build.directory}/opt</directory> - </resource> - <resource> - <targetPath>/</targetPath> - <directory>${docker.location}</directory> - <include>startup.sh</include> - </resource> - </resources> - <runs> - <run>chmod 0700 /startup.sh</run> - </runs> - <exposes> - <expose>8080</expose> - <expose>8443</expose> - </exposes> + <verbose>${docker.verbose}</verbose> + <apiVersion>${docker.apiVersion}</apiVersion> + <pullRegistry>${docker.pull.registry}</pullRegistry> + <pushRegistry>${docker.push.registry}</pushRegistry> + <images> + <image> + <name>${datarouter.prov.image.name}</name> + <build> + <cleanup>try</cleanup> + <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir> + <dockerFile>Dockerfile</dockerFile> + <tags> + <tag>${dockertag1}</tag> + <tag>${dockertag2}</tag> + </tags> + </build> + </image> + </images> </configuration> + <executions> + <execution> + <id>generate-images</id> + <phase>install</phase> + <goals> + <goal>build</goal> + </goals> + </execution> + <execution> + <id>push-images</id> + <phase>deploy</phase> + <goals> + <goal>push</goal> + </goals> + </execution> + </executions> </plugin> </plugins> </build> @@ -242,7 +283,7 @@ <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> - <outputDirectory>${basedir}/target/opt/app/subscriber/lib</outputDirectory> + <outputDirectory>${basedir}/target/docker-stage/opt/app/subscriber/lib</outputDirectory> <archive> <manifest> <addClasspath>true</addClasspath> @@ -277,12 +318,12 @@ <executions> <execution> <id>copy-docker-file</id> - <phase>package</phase> + <phase>validate</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> - <outputDirectory>${docker.location}</outputDirectory> + <outputDirectory>${basedir}/target/docker-stage</outputDirectory> <overwrite>true</overwrite> <resources> <resource> @@ -296,18 +337,20 @@ </configuration> </execution> <execution> - <id>copy-resources-1</id> + <id>copy-startup-script</id> <phase>validate</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> - <outputDirectory>${basedir}/target/opt/app/subscriber/lib</outputDirectory> + <outputDirectory>${basedir}/target/docker-stage/opt</outputDirectory> + <overwrite>true</overwrite> <resources> <resource> - <directory>${project.basedir}/src/main/resources</directory> + <directory>${basedir}/src/main/resources/docker</directory> + <filtering>true</filtering> <includes> - <include>**/*.jar</include> + <include>startup.sh</include> </includes> </resource> </resources> @@ -320,7 +363,7 @@ <goal>copy-resources</goal> </goals> <configuration> - <outputDirectory>${basedir}/target/opt/app/subscriber/etc</outputDirectory> + <outputDirectory>${basedir}/target/docker-stage/opt/app/subscriber/etc</outputDirectory> <resources> <resource> <directory>${basedir}/src/main/resources</directory> diff --git a/datarouter-subscriber/src/main/resources/docker/Dockerfile b/datarouter-subscriber/src/main/resources/docker/Dockerfile new file mode 100644 index 00000000..fe6d2fc3 --- /dev/null +++ b/datarouter-subscriber/src/main/resources/docker/Dockerfile @@ -0,0 +1,31 @@ +######### +# ============LICENSE_START==================================================== +# org.onap.dmaap +# =========================================================================== +# Copyright © 2017 AT&T Intellectual Property. All rights reserved. +# Modifications Copyright (C) 2018 Nokia. All rights reserved. +# =========================================================================== +# 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. +# ============LICENSE_END==================================================== +# +FROM openjdk:8-jre-alpine + +MAINTAINER DMAAP Team + +COPY /opt /opt + +EXPOSE 8080 8443 + +WORKDIR /opt +RUN chmod 0700 startup.sh +ENTRYPOINT ["sh", "startup.sh"] @@ -26,7 +26,7 @@ <groupId>org.onap.dmaap.datarouter</groupId> <artifactId>parent</artifactId> <name>dmaap-datarouter</name> - <version>2.0.1-SNAPSHOT</version> + <version>2.0.2-SNAPSHOT</version> <packaging>pom</packaging> <url>https://github.com/att/DMAAP_DATAROUTER</url> <parent> @@ -35,7 +35,7 @@ <version>1.2.3</version> </parent> <properties> - <datarouter.version>2.0.1-SNAPSHOT</datarouter.version> + <datarouter.version>2.0.2-SNAPSHOT</datarouter.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> @@ -59,7 +59,6 @@ <releaseNexusPath>/content/repositories/releases/</releaseNexusPath> <stagingNexusPath>/content/repositories/staging/</stagingNexusPath> <sitePath>/content/sites/site/org/onap/dmaap/datarouter/${project.artifactId}/${project.version}</sitePath> - <docker.maven.plugin.version>1.0.0</docker.maven.plugin.version> <skip.docker.build>true</skip.docker.build> <skip.docker.tag>true</skip.docker.tag> <skip.docker.push>true</skip.docker.push> @@ -74,14 +73,6 @@ <build> <plugins> <plugin> - <groupId>com.spotify</groupId> - <artifactId>docker-maven-plugin</artifactId> - <version>${docker.maven.plugin.version}</version> - <configuration> - <skipDockerBuild>true</skipDockerBuild> - </configuration> - </plugin> - <plugin> <groupId>org.sonatype.plugins</groupId> <artifactId>nexus-staging-maven-plugin</artifactId> <version>1.6.7</version> |