add support to generate docker image for artifactbroker
. add Dockerfile to describe the docker image steps
. add build_image.sh to wrap the generation of image
. Use Alpine as base docker image in distribution to make
it small
Change-Id: I8a2c8321be176d549063e6ab296adcacb46b9ad3
Issue-ID: MULTICLOUD-548
Signed-off-by: liboNet <libo.zhu@intel.com>
diff --git a/artifactbroker/docker/Dockerfile b/artifactbroker/docker/Dockerfile
new file mode 100644
index 0000000..008a3c1
--- /dev/null
+++ b/artifactbroker/docker/Dockerfile
@@ -0,0 +1,41 @@
+FROM alpine:3.9
+
+ARG HTTP_PROXY=${HTTP_PROXY}
+ARG HTTPS_PROXY=${HTTPS_PROXY}
+ARG BUILD_VERSION=${BUILD_VERSION}
+ARG ARTIFACT_LOGS=/var/log/onap
+
+ENV http_proxy $HTTP_PROXY
+ENV https_proxy $HTTPS_PROXY
+ENV BUILD_VERSION ${BUILD_VERSION}
+ENV ARTIFACT_LOGS ${ARTIFACT_LOGS}
+
+ENV ARTIFACT_HOME=/opt/app/
+ENV ARTIFACT_DISTRIBUTION_HOME=${ARTIFACT_HOME}/distribution
+
+EXPOSE 9014
+
+RUN apk add --no-cache --update busybox-extras bash nss procps coreutils findutils grep zip unzip \
+ curl wget openssh openjdk8 maven jq httpie py-pip
+
+RUN addgroup -S onap && \
+ adduser -S --shell /bin/bash -G onap onap
+
+RUN mkdir -p ${ARTIFACT_DISTRIBUTION_HOME} ${ARTIFACT_LOGS} ${ARTIFACT_HOME}/etc/ssl && \
+ chown -R onap:onap ${ARTIFACT_HOME} ${ARTIFACT_DISTRIBUTION_HOME} ${ARTIFACT_LOGS}
+
+WORKDIR ${ARTIFACT_DISTRIBUTION_HOME}
+RUN wget -O multicloud-framework-artifactbroker-package-1.3.0-SNAPSHOT.zip "https://nexus.onap.org/service/local/artifact/maven/redirect?r=autorelease-121669&g=org.onap.multicloud.framework&a=multicloud-framework-artifactbroker-package&v=1.3.0&e=zip" && \
+ unzip -q -o -B multicloud-framework-artifactbroker-package-1.3.0-SNAPSHOT.zip && \
+ rm -f multicloud-framework-artifactbroker-package-1.3.0-SNAPSHOT.zip
+COPY artifact-dist.sh bin/.
+#RUN tar xvfz /packages/policy-distribution.tar.gz --directory ${ARTIFACT_DISTRIBUTION_HOME}
+#RUN rm /packages/policy-distribution.tar.gz
+
+RUN chmod +x bin/*.sh && \
+ cp ${ARTIFACT_DISTRIBUTION_HOME}/etc/ssl/* ${ARTIFACT_HOME}/etc/ssl && \
+ chown onap:onap ${ARTIFACT_HOME}/etc/ssl/*
+
+USER onap
+WORKDIR ${ARTIFACT_DISTRIBUTION_HOME}/bin
+ENTRYPOINT [ "bash", "./artifact-dist.sh" ]
diff --git a/artifactbroker/docker/artifact-dist.sh b/artifactbroker/docker/artifact-dist.sh
new file mode 100644
index 0000000..94c1dfc
--- /dev/null
+++ b/artifactbroker/docker/artifact-dist.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+#
+# ============LICENSE_START=======================================================
+# Copyright (C) 2018 Ericsson. 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.
+#
+# SPDX-License-Identifier: Apache-2.0
+# ============LICENSE_END=========================================================
+#
+
+JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk/
+ARTIFACT_DISTRIBUTION_HOME=/opt/app/distribution
+KEYSTORE="${ARTIFACT_HOME}/etc/ssl/policy-keystore"
+KEYSTORE_PASSWD="Pol1cy_0nap"
+TRUSTSTORE="${ARTIFACT_HOME}/etc/ssl/policy-truststore"
+TRUSTSTORE_PASSWD="Pol1cy_0nap"
+
+
+if [ "$#" -eq 1 ]; then
+ CONFIG_FILE=$1
+else
+ CONFIG_FILE=${CONFIG_FILE}
+fi
+
+if [ -z "$CONFIG_FILE" ]
+ then
+ CONFIG_FILE="$ARTIFACT_DISTRIBUTION_HOME/etc/defaultConfig.json"
+fi
+
+echo "Policy distribution config file: $CONFIG_FILE"
+
+$JAVA_HOME/bin/java -cp "$ARTIFACT_DISTRIBUTION_HOME/etc:$ARTIFACT_DISTRIBUTION_HOME/lib/*" -Djavax.net.ssl.keyStore="$KEYSTORE" -Djavax.net.ssl.keyStorePassword="$KEYSTORE_PASSWD" -Djavax.net.ssl.trustStore="$TRUSTSTORE" -Djavax.net.ssl.trustStorePassword="$TRUSTSTORE_PASSWD" org.onap.policy.distribution.main.startstop.Main -c $CONFIG_FILE
diff --git a/artifactbroker/docker/build_image.sh b/artifactbroker/docker/build_image.sh
new file mode 100755
index 0000000..1dcd7d5
--- /dev/null
+++ b/artifactbroker/docker/build_image.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+# Copyright (c) 2017-2018 VMware, Inc.
+#
+# 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.
+
+DIRNAME=`dirname $0`
+DOCKER_BUILD_DIR=`cd $DIRNAME/; pwd`
+echo "DOCKER_BUILD_DIR=${DOCKER_BUILD_DIR}"
+cd ${DOCKER_BUILD_DIR}
+
+BUILD_ARGS="--no-cache"
+ORG="onap"
+VERSION="1.3.0-SNAPSHOT"
+STAGING_VERSION="1.3.0-STAGING"
+PROJECT="multicloud"
+IMAGE="framework-artifactbroker"
+DOCKER_REPOSITORY="nexus3.onap.org:10003"
+IMAGE_NAME="${DOCKER_REPOSITORY}/${ORG}/${PROJECT}/${IMAGE}"
+
+if [ $HTTP_PROXY ]; then
+ BUILD_ARGS+=" --build-arg HTTP_PROXY=${HTTP_PROXY}"
+fi
+if [ $HTTPS_PROXY ]; then
+ BUILD_ARGS+=" --build-arg HTTPS_PROXY=${HTTPS_PROXY}"
+fi
+
+function build_image {
+ docker build ${BUILD_ARGS} -t ${IMAGE_NAME}:${VERSION} -t ${IMAGE_NAME}:latest -t ${IMAGE_NAME}:${STAGING_VERSION} .
+}
+
+function push_image {
+ docker push ${IMAGE_NAME}:${VERSION}
+ docker push ${IMAGE_NAME}:${STAGING_VERSION}
+ docker push ${IMAGE_NAME}:latest
+}
+
+build_image
+push_image