From efad46124485f1572765fad05284d8a070fb9277 Mon Sep 17 00:00:00 2001 From: sandovalfr Date: Mon, 4 Mar 2019 09:31:59 -0500 Subject: small, multi-platform docker images Issue-ID: INT-907 Issue-ID: INT-908 Issue-ID: INT-909 Change-Id: I2df861f0098588ec9b394b501af2de6f7559c213 Signed-off-by: sandovalfr --- README.md | 40 ++++++ datarouter-docker-compose/pom.xml | 2 +- datarouter-node/pom.xml | 159 ++++++++++++++++----- .../src/main/resources/docker/Dockerfile | 34 +++++ datarouter-prov/pom.xml | 136 ++++++++++++------ .../src/main/resources/docker/Dockerfile | 33 +++++ datarouter-subscriber/pom.xml | 121 +++++++++++----- .../src/main/resources/docker/Dockerfile | 31 ++++ pom.xml | 13 +- 9 files changed, 435 insertions(+), 134 deletions(-) create mode 100644 datarouter-node/src/main/resources/docker/Dockerfile create mode 100644 datarouter-prov/src/main/resources/docker/Dockerfile create mode 100644 datarouter-subscriber/src/main/resources/docker/Dockerfile diff --git a/README.md b/README.md index 97b35af8..56d29bb4 100644 --- a/README.md +++ b/README.md @@ -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 @@ org.onap.dmaap.datarouter parent - 2.0.1-SNAPSHOT + 2.0.2-SNAPSHOT ../pom.xml datarouter-docker-compose 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 @@ org.onap.dmaap.datarouter parent - 2.0.1-SNAPSHOT + 2.0.2-SNAPSHOT ../pom.xml datarouter-node @@ -38,6 +38,10 @@ true /content/sites/site/${project.groupId}/${project.artifactId}/${project.version} ${basedir}/target/${artifactId} + + ${maven.build.timestamp} + yyyyMMdd'T'HHmmss'Z' + onap/dmaap/datarouter-node @@ -226,40 +230,78 @@ + + - com.spotify + org.codehaus.groovy.maven + gmaven-plugin + + + validate + + execute + + + + ${project.version} + ${maven.build.timestamp} + + + 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']; + + + + + + + io.fabric8 docker-maven-plugin - ${docker.maven.plugin.version} + 0.28.0 - ${onap.nexus.dockerregistry.daily}/${datarouter.node.image.name} - java:8 - ${onap.nexus.dockerregistry.daily} - false - - ${project.version} - latest - - true - ["/startup.sh", "start"] - - - /opt - ${project.build.directory}/opt - - - / - ${docker.location} - startup.sh - - - - chmod 0700 /startup.sh - - - 8080 - 8443 - + ${docker.verbose} + ${docker.apiVersion} + ${docker.pull.registry} + ${docker.push.registry} + + + ${datarouter.node.image.name} + + try + ${basedir}/target/docker-stage + Dockerfile + + ${dockertag1} + ${dockertag2} + + + + + + + generate-images + install + + build + + + + push-images + deploy + + push + + + @@ -308,7 +350,7 @@ jar-with-dependencies - ${basedir}/target/opt/app/datartr/lib + ${basedir}/target/docker-stage/opt/app/datartr/lib true @@ -335,12 +377,12 @@ copy-docker-file - package + validate copy-resources - ${docker.location} + ${basedir}/target/docker-stage true @@ -354,13 +396,33 @@ - copy-resources + copy-startup-script + validate + + copy-resources + + + ${basedir}/target/docker-stage/opt + true + + + ${basedir}/src/main/resources/docker + true + + startup.sh + + + + + + + copy-resources-2 validate copy-resources - ${basedir}/target/opt/app/datartr/etc + ${basedir}/target/docker-stage/opt/app/datartr/etc ${basedir}/src/main/resources @@ -373,13 +435,32 @@ - copy-resources-1 + copy-resources-3 + validate + + copy-resources + + + ${basedir}/target/docker-stage/opt/app/datartr + + + ${basedir}/data + + misc/** + **/** + + + + + + + copy-resources-4 validate copy-resources - ${basedir}/target/opt/app/datartr/aaf_certs + ${basedir}/target/docker-stage/opt/app/datartr/aaf_certs ${basedir}/aaf_certs @@ -405,7 +486,7 @@ copy-dependencies - ${project.build.directory}/opt/app/datartr/lib + ${project.build.directory}/docker-stage/opt/app/datartr/lib false false true 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 @@ org.onap.dmaap.datarouter parent - 2.0.1-SNAPSHOT + 2.0.2-SNAPSHOT ../pom.xml datarouter-prov @@ -41,6 +41,12 @@ ${basedir}/target/${artifactId} onap/dmaap/datarouter-prov + + ${maven.build.timestamp} + yyyyMMdd'T'HHmmss'Z' + + true + 1.23 @@ -264,40 +270,78 @@ + + + + org.codehaus.groovy.maven + gmaven-plugin + + + validate + + execute + + + + ${project.version} + ${maven.build.timestamp} + + + 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']; + + + + + - com.spotify + io.fabric8 docker-maven-plugin - 1.0.0 + 0.28.0 - ${onap.nexus.dockerregistry.daily}/${datarouter.prov.image.name} - java:8 - ${onap.nexus.dockerregistry.daily} - false - - ${project.version} - latest - - true - ["/startup.sh", "start"] - - - /opt - ${project.build.directory}/opt - - - / - ${docker.location} - startup.sh - - - - chmod 0700 /startup.sh - - - 8080 - 8443 - + ${docker.verbose} + ${docker.apiVersion} + ${docker.pull.registry} + ${docker.push.registry} + + + ${datarouter.prov.image.name} + + try + ${basedir}/target/docker-stage + Dockerfile + + ${dockertag1} + ${dockertag2} + + + + + + + generate-images + install + + build + + + + push-images + deploy + + push + + + @@ -350,7 +394,7 @@ jar-with-dependencies - ${basedir}/target/opt/app/datartr/lib + ${basedir}/target/docker-stage/opt/app/datartr/lib true @@ -379,43 +423,47 @@ 3.6.0 + + maven-resources-plugin 2.7 - copy-docker-file - package + copy-dockerfile + validate copy-resources - ${docker.location} + ${basedir}/target/docker-stage true ${basedir}/src/main/resources/docker true - **/* + Dockerfile - copy-resources-1 + copy-startup-script validate copy-resources - ${basedir}/target/opt/app/datartr/lib + ${basedir}/target/docker-stage/opt + true - ${project.basedir}/src/main/resources + ${basedir}/src/main/resources/docker + true - **/*.jar + startup.sh @@ -428,7 +476,7 @@ copy-resources - ${basedir}/target/opt/app/datartr/etc + ${basedir}/target/docker-stage/opt/app/datartr/etc ${basedir}/src/main/resources @@ -447,7 +495,7 @@ copy-resources - ${basedir}/target/opt/app/datartr + ${basedir}/target/docker-stage/opt/app/datartr ${basedir}/data @@ -466,7 +514,7 @@ copy-resources - ${basedir}/target/opt/app/datartr/aaf_certs + ${basedir}/target/docker-stage/opt/app/datartr/aaf_certs ${basedir}/aaf_certs @@ -492,7 +540,7 @@ copy-dependencies - ${project.build.directory}/opt/app/datartr/lib + ${basedir}/target/docker-stage/opt/app/datartr/aaf_certs false false true 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 @@ org.onap.dmaap.datarouter parent - 2.0.1-SNAPSHOT + 2.0.2-SNAPSHOT ../pom.xml datarouter-subscriber @@ -40,6 +40,9 @@ ${basedir}/target/${artifactId} onap/dmaap/datarouter-subscriber + + ${maven.build.timestamp} + yyyyMMdd'T'HHmmss'Z' @@ -163,40 +166,78 @@ + + + + org.codehaus.groovy.maven + gmaven-plugin + + + validate + + execute + + + + ${project.version} + ${maven.build.timestamp} + + + 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']; + + + + + - com.spotify + io.fabric8 docker-maven-plugin - ${docker.maven.plugin.version} + 0.28.0 - ${onap.nexus.dockerregistry.daily}/${datarouter.prov.image.name} - java:8 - ${onap.nexus.dockerregistry.daily} - false - - ${project.version} - latest - - true - ["/startup.sh", "start"] - - - /opt - ${project.build.directory}/opt - - - / - ${docker.location} - startup.sh - - - - chmod 0700 /startup.sh - - - 8080 - 8443 - + ${docker.verbose} + ${docker.apiVersion} + ${docker.pull.registry} + ${docker.push.registry} + + + ${datarouter.prov.image.name} + + try + ${basedir}/target/docker-stage + Dockerfile + + ${dockertag1} + ${dockertag2} + + + + + + + generate-images + install + + build + + + + push-images + deploy + + push + + + @@ -242,7 +283,7 @@ jar-with-dependencies - ${basedir}/target/opt/app/subscriber/lib + ${basedir}/target/docker-stage/opt/app/subscriber/lib true @@ -277,12 +318,12 @@ copy-docker-file - package + validate copy-resources - ${docker.location} + ${basedir}/target/docker-stage true @@ -296,18 +337,20 @@ - copy-resources-1 + copy-startup-script validate copy-resources - ${basedir}/target/opt/app/subscriber/lib + ${basedir}/target/docker-stage/opt + true - ${project.basedir}/src/main/resources + ${basedir}/src/main/resources/docker + true - **/*.jar + startup.sh @@ -320,7 +363,7 @@ copy-resources - ${basedir}/target/opt/app/subscriber/etc + ${basedir}/target/docker-stage/opt/app/subscriber/etc ${basedir}/src/main/resources 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"] diff --git a/pom.xml b/pom.xml index 8ef01610..8f3672ce 100755 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ org.onap.dmaap.datarouter parent dmaap-datarouter - 2.0.1-SNAPSHOT + 2.0.2-SNAPSHOT pom https://github.com/att/DMAAP_DATAROUTER @@ -35,7 +35,7 @@ 1.2.3 - 2.0.1-SNAPSHOT + 2.0.2-SNAPSHOT UTF-8 1.8 1.8 @@ -59,7 +59,6 @@ /content/repositories/releases/ /content/repositories/staging/ /content/sites/site/org/onap/dmaap/datarouter/${project.artifactId}/${project.version} - 1.0.0 true true true @@ -73,14 +72,6 @@ - - com.spotify - docker-maven-plugin - ${docker.maven.plugin.version} - - true - - org.sonatype.plugins nexus-staging-maven-plugin -- cgit 1.2.3-korg