From 1cbde47370d2a9177188f8390f22a364e3909ec6 Mon Sep 17 00:00:00 2001 From: Dominic Schabel Date: Fri, 26 Oct 2018 23:57:48 +0200 Subject: [PATCH] First version of a Dockerfile generator added Signed-off-by: Dominic Schabel --- hawkbit-runtime/docker/generator/generate.sh | 27 +++++++ .../docker/generator/template/Dockerfile | 23 ++++++ .../generator/template/Dockerfile-mysql | 15 ++++ hawkbit-runtime/docker/generator/template/KEY | 79 +++++++++++++++++++ 4 files changed, 144 insertions(+) create mode 100644 hawkbit-runtime/docker/generator/generate.sh create mode 100644 hawkbit-runtime/docker/generator/template/Dockerfile create mode 100644 hawkbit-runtime/docker/generator/template/Dockerfile-mysql create mode 100644 hawkbit-runtime/docker/generator/template/KEY diff --git a/hawkbit-runtime/docker/generator/generate.sh b/hawkbit-runtime/docker/generator/generate.sh new file mode 100644 index 000000000..16b825dd9 --- /dev/null +++ b/hawkbit-runtime/docker/generator/generate.sh @@ -0,0 +1,27 @@ +#!/bin/bash +set -euxo pipefail +# +# Copyright (c) 2018 Bosch Software Innovations GmbH and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# + +HAWKBIT_VERSION="0.2.4" +MARIADB_DRIVER_VERSION="2.3.0" +BASE_IMAGE="openjdk:8u181-jre-alpine" + +################################################## + +mkdir -p "../$HAWKBIT_VERSION" && mkdir -p "../$HAWKBIT_VERSION-mysql" + +cp ./template/KEY "../$HAWKBIT_VERSION/KEY" +cp ./template/KEY "../$HAWKBIT_VERSION-mysql/KEY" + +cp ./template/Dockerfile "../$HAWKBIT_VERSION/Dockerfile" +cp ./template/Dockerfile-mysql "../$HAWKBIT_VERSION-mysql/Dockerfile" + +sed -i '' -e "s/{{BASE_IMAGE}}/${BASE_IMAGE}/g; s/{{HAWKBIT_VERSION}}/$HAWKBIT_VERSION/g" "../$HAWKBIT_VERSION/Dockerfile" +sed -i '' -e "s/{{HAWKBIT_VERSION}}/$HAWKBIT_VERSION/g; s/{{MARIADB_DRIVER_VERSION}}/$MARIADB_DRIVER_VERSION/g" "../$HAWKBIT_VERSION-mysql/Dockerfile" diff --git a/hawkbit-runtime/docker/generator/template/Dockerfile b/hawkbit-runtime/docker/generator/template/Dockerfile new file mode 100644 index 000000000..cdbf300f2 --- /dev/null +++ b/hawkbit-runtime/docker/generator/template/Dockerfile @@ -0,0 +1,23 @@ +FROM {{BASE_IMAGE}} + +ENV HAWKBIT_VERSION={{HAWKBIT_VERSION}} \ + HAWKBIT_HOME=/opt/hawkbit + +EXPOSE 8080 + +COPY KEY . + +RUN set -x \ + && apk add --no-cache --virtual build-dependencies gnupg unzip libressl wget \ + && gpg --import KEY \ + && mkdir -p $HAWKBIT_HOME \ + && cd $HAWKBIT_HOME \ + && wget -O hawkbit-update-server.jar --no-verbose https://repo1.maven.org/maven2/org/eclipse/hawkbit/hawkbit-update-server/$HAWKBIT_VERSION/hawkbit-update-server-$HAWKBIT_VERSION.jar \ + && wget -O hawkbit-update-server.jar.asc --no-verbose https://repo1.maven.org/maven2/org/eclipse/hawkbit/hawkbit-update-server/$HAWKBIT_VERSION/hawkbit-update-server-$HAWKBIT_VERSION.jar.asc \ + && gpg --batch --verify hawkbit-update-server.jar.asc hawkbit-update-server.jar \ + && apk del build-dependencies + +VOLUME "$HAWKBIT_HOME/data" + +WORKDIR $HAWKBIT_HOME +ENTRYPOINT ["java","-jar","hawkbit-update-server.jar","-Xms768m -Xmx768m -XX:MaxMetaspaceSize=250m -XX:MetaspaceSize=250m -Xss300K -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+UseCompressedOops -XX:+HeapDumpOnOutOfMemoryError"] diff --git a/hawkbit-runtime/docker/generator/template/Dockerfile-mysql b/hawkbit-runtime/docker/generator/template/Dockerfile-mysql new file mode 100644 index 000000000..ec041b9fc --- /dev/null +++ b/hawkbit-runtime/docker/generator/template/Dockerfile-mysql @@ -0,0 +1,15 @@ +FROM hawkbit/hawkbit-update-server:{{HAWKBIT_VERSION}} + +ENV MARIADB_DRIVER_VERSION={{MARIADB_DRIVER_VERSION}} + +COPY KEY . + +RUN set -x \ + && apk add --no-cache --virtual build-dependencies gnupg unzip libressl wget \ + && gpg --import KEY \ + && wget -O $JAVA_HOME/lib/ext/mariadb-java-client.jar --no-verbose http://downloads.mariadb.com/Connectors/java/connector-java-$MARIADB_DRIVER_VERSION/mariadb-java-client-$MARIADB_DRIVER_VERSION.jar \ + && wget -O $JAVA_HOME/lib/ext/mariadb-java-client.jar.asc --no-verbose http://downloads.mariadb.com/Connectors/java/connector-java-$MARIADB_DRIVER_VERSION/mariadb-java-client-$MARIADB_DRIVER_VERSION.jar.asc \ + && gpg --verify --batch $JAVA_HOME/lib/ext/mariadb-java-client.jar.asc $JAVA_HOME/lib/ext/mariadb-java-client.jar \ + && apk del build-dependencies + +ENTRYPOINT ["java","-jar","hawkbit-update-server.jar","--spring.profiles.active=mysql","-Xms768m -Xmx768m -XX:MaxMetaspaceSize=250m -XX:MetaspaceSize=250m -Xss300K -XX:+UseG1GC -XX:+UseStringDeduplication -XX:+UseCompressedOops -XX:+HeapDumpOnOutOfMemoryError"] diff --git a/hawkbit-runtime/docker/generator/template/KEY b/hawkbit-runtime/docker/generator/template/KEY new file mode 100644 index 000000000..7a959f646 --- /dev/null +++ b/hawkbit-runtime/docker/generator/template/KEY @@ -0,0 +1,79 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: SKS 1.1.6 +Comment: Hostname: pgp.mit.edu + +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 +LrdPYOGtAA== +=a0Oj +-----END PGP PUBLIC KEY BLOCK-----