From 76cb15908ebfab78034aff381ba5c867b5491c05 Mon Sep 17 00:00:00 2001 From: liboNet Date: Fri, 12 Apr 2019 02:41:04 +0800 Subject: [PATCH] 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 --- artifactbroker/docker/Dockerfile | 41 +++++++++++++++++++++++++++++++ artifactbroker/docker/artifact-dist.sh | 43 ++++++++++++++++++++++++++++++++ artifactbroker/docker/build_image.sh | 45 ++++++++++++++++++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 artifactbroker/docker/Dockerfile create mode 100644 artifactbroker/docker/artifact-dist.sh create mode 100755 artifactbroker/docker/build_image.sh 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 -- 2.16.6