ENV JAVA_HOME /opt/jdk
-RUN ARCH=; SAPMACHINE_MAJOR_VERSION=$(echo ${SAPMACHINE_VERSION} | cut -d. -f1) \
- && dpkgArch="$(dpkg --print-architecture)" \
- && case "${dpkgArch##*-}" in \
+RUN sapmachine_install() { \
+ SAPMACHINE_MAJOR_VERSION=$(echo ${SAPMACHINE_VERSION} | cut -d. -f1); \
+ ARCH=; \
+ dpkgArch="$(dpkg --print-architecture)"; \
+ case "${dpkgArch##*-}" in \
amd64) ARCH='amd64';; \
*) echo "unsupported architecture"; exit 1 ;; \
- esac \
+ esac; \
+ apt-get update; \
+ apt-get install -y ca-certificates gnupg dirmngr --no-install-recommends; \
+ rm -rf /var/lib/apt/lists/*; \
+ export GNUPGHOME="$(mktemp -d)"; \
+ for key in \
+ CACB9FE09150307D1D22D82962754C3B3ABCFE23 \
+ ; do \
+ gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/sapmachine.gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \
+ gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/sapmachine.gpg --batch --keyserver hkps://keyserver.ubuntu.com --recv-keys "$key" ; \
+ done; \
+ chmod 644 /etc/apt/trusted.gpg.d/sapmachine.gpg; \
+ echo "deb http://dist.sapmachine.io/debian/${ARCH}/ ./" | tee /etc/apt/sources.list.d/sapmachine.list; \
+ apt-get update; \
+ apt-get install -y sapmachine-${SAPMACHINE_MAJOR_VERSION}-jdk=${SAPMACHINE_VERSION} --no-install-recommends; \
+ rm -rf "$GNUPGHOME" /var/lib/apt/lists/*; \
+ apt-get remove --purge --autoremove -y ca-certificates gnupg dirmngr; \
+ ln -s /usr/lib/jvm/sapmachine-${SAPMACHINE_MAJOR_VERSION} ${JAVA_HOME}; \
+ }; \
+ sapjvm_install() { \
+ ARCH=; \
+ dpkgArch="$(dpkg --print-architecture)"; \
+ case "${dpkgArch##*-}" in \
+ amd64) ARCH='x64';; \
+ ppc64el) ARCH='ppc64le';; \
+ *) echo "unsupported architecture"; exit 1 ;; \
+ esac; \
+ apt-get update; \
+ apt-get install -y ca-certificates curl libarchive-tools --no-install-recommends; \
+ rm -rf /var/lib/apt/lists/*; \
+ curl -fsSLO --compressed -b 'eula_3_1_agreed=tools.hana.ondemand.com/developer-license-3_1.txt' https://tools.hana.ondemand.com/additional/sapjvm-${SAPMACHINE_VERSION}-linux-${ARCH}.zip; \
+ echo "583dedfeee0c119839a610ddc8c6768d0c044429 sapjvm-${SAPMACHINE_VERSION}-linux-${ARCH}.zip" | sha1sum -c -; \
+ bsdtar -xvf sapjvm-${SAPMACHINE_VERSION}-linux-${ARCH}.zip -C /usr/local --strip-components=1 --no-same-owner; \
+ rm -f sapjvm-${SAPMACHINE_VERSION}-linux-${ARCH}.zip; \
+ apt-get remove --purge --auto-remove -y ca-certificates curl libarchive-tools; \
+ ln -s /usr/local ${JAVA_HOME}; \
+ } \
&& set -ex \
- && apt-get update \
- && apt-get install -y ca-certificates gnupg dirmngr --no-install-recommends \
- && rm -rf /var/lib/apt/lists/* \
- && export GNUPGHOME="$(mktemp -d)" \
- && for key in \
- CACB9FE09150307D1D22D82962754C3B3ABCFE23 \
- ; do \
- gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/sapmachine.gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \
- gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/sapmachine.gpg --batch --keyserver hkps://keyserver.ubuntu.com --recv-keys "$key" ; \
- done \
- && chmod 644 /etc/apt/trusted.gpg.d/sapmachine.gpg \
- && echo "deb http://dist.sapmachine.io/debian/${ARCH}/ ./" | tee /etc/apt/sources.list.d/sapmachine.list \
- && apt-get update \
- && apt-get install -y sapmachine-${SAPMACHINE_MAJOR_VERSION}-jdk=${SAPMACHINE_VERSION} --no-install-recommends \
- && rm -rf "$GNUPGHOME" /var/lib/apt/lists/* \
- && apt-get remove --purge --autoremove -y ca-certificates gnupg dirmngr \
- && ln -s /usr/lib/jvm/sapmachine-${SAPMACHINE_MAJOR_VERSION} ${JAVA_HOME} \
+ && if [ $(echo ${SAPMACHINE_VERSION} | cut -d. -f1) -le 8 ]; then \
+ sapjvm_install; \
+ else \
+ sapmachine_install; \
+ fi \
# smoke test
&& java -version
PROJECT_NAME?=sap-e-mobility
-NAME?=mbt-docker
+NAME?=mbt-node16-java11-docker
SUBMODULES_INIT?=false
DOCKER_REGISTRY_USERNAME?=fraggle0
DOCKER_REGISTRY_PASSWORD?=
--- /dev/null
+#!/usr/bin/env sh
+
+shopt -s extglob
+
+images="mbt-node14-java8-docker mbt-node16-java8-docker mbt-node18-java8-docker \
+ mbt-node14-java11-docker mbt-node16-java11-docker mbt-node18-java11-docker \
+ mbt-node14-java17-docker mbt-node16-java17-docker mbt-node18-java17-docker \
+ mbt-node14-java19-docker mbt-node16-java19-docker mbt-node18-java19-docker"
+
+repositories="mbt-node14-java8-docker mbt-node16-java8-docker mbt-node18-java8-docker \
+ mbt-node14-java11-docker mbt-node16-java11-docker mbt-node18-java11-docker \
+ mbt-node14-java17-docker mbt-node16-java17-docker mbt-node18-java17-docker \
+ mbt-node14-java19-docker mbt-node16-java19-docker mbt-node18-java19-docker"
+
+usage() {
+ echo " Build docker images.
+
+ Usage:
+ ./$(basename $0) [-b <name>]
+ ./$(basename $0) [-p <name>]
+ ./$(basename $0) [-c]
+ ./$(basename $0) [-h]
+
+ Options:
+ -h Show this help.
+ -b <${images//+([[:space:]])/|}|all> Build docker images.
+ -p <${repositories//+([[:space:]])/|}|all> Push docker images.
+ -c Clean docker images." 1>&2; exit 1;
+}
+
+build_all() {
+ for image in ${images}; do
+ make NAME=${image}
+ done
+}
+
+push_all() {
+ for repository in ${repositories}; do
+ make docker-push-registry NAME=${repository}
+ done
+}
+
+[ $# -eq 0 ] && usage
+while getopts ":b:p:ch" option; do
+ case "${option}" in
+ b)
+ name=${OPTARG}
+ if [ ${name} = "all" ]; then
+ build_all
+ elif [ -z "${images##*$name*}" ]; then
+ make NAME=${name}
+ else
+ echo "Error: Unknown image name as option argument '${OPTARG}'" >&2;
+ usage
+ fi
+ ;;
+ p)
+ repository=${OPTARG}
+ if [ ${repository} = "all" ]; then
+ push_all
+ elif [ -z "${repositories##*$repository*}" ]; then
+ make docker-push-registry NAME=${repository}
+ else
+ echo "Error: Unknown repository name as option argument '${OPTARG}'" >&2;
+ usage
+ fi
+ ;;
+ c)
+ make dist-clean
+ ;;
+ :)
+ echo "Error: Missing option argument for '-${OPTARG}'" >&2;
+ usage
+ ;;
+ \?)
+ # Invalid option
+ echo "Error: Unknown or invalid option for '-${OPTARG}'" >&2;
+ usage
+ ;;
+ *|h)
+ usage
+ ;;
+ esac
+done
version: '3.8'
services:
- mbt-docker:
+ mbt-node18-java8-docker:
platform: linux/amd64
build:
+ args:
+ NODE_VERSION: 18.13.0
+ SAPMACHINE_VERSION: 8.1.091
+ dockerfile: Dockerfile
+ mbt-node16-java8-docker:
+ platform: linux/amd64
+ build:
+ args:
+ NODE_VERSION: 16.19.0
+ SAPMACHINE_VERSION: 8.1.091
+ dockerfile: Dockerfile
+ mbt-node14-java8-docker:
+ platform: linux/amd64
+ build:
+ args:
+ NODE_VERSION: 14.21.2
+ SAPMACHINE_VERSION: 8.1.091
+ dockerfile: Dockerfile
+ mbt-node18-java11-docker:
+ platform: linux/amd64
+ build:
+ args:
+ NODE_VERSION: 18.13.0
+ SAPMACHINE_VERSION: 11.0.17
+ dockerfile: Dockerfile
+ mbt-node16-java11-docker:
+ platform: linux/amd64
+ build:
+ args:
+ NODE_VERSION: 16.19.0
+ SAPMACHINE_VERSION: 11.0.17
+ dockerfile: Dockerfile
+ mbt-node14-java11-docker:
+ platform: linux/amd64
+ build:
+ args:
+ NODE_VERSION: 14.21.2
+ SAPMACHINE_VERSION: 11.0.17
+ dockerfile: Dockerfile
+ mbt-node18-java17-docker:
+ platform: linux/amd64
+ build:
+ args:
+ NODE_VERSION: 18.13.0
+ SAPMACHINE_VERSION: 17.0.5
+ dockerfile: Dockerfile
+ mbt-node16-java17-docker:
+ platform: linux/amd64
+ build:
+ args:
+ NODE_VERSION: 16.19.0
+ SAPMACHINE_VERSION: 17.0.5
+ dockerfile: Dockerfile
+ mbt-node14-java17-docker:
+ platform: linux/amd64
+ build:
+ args:
+ NODE_VERSION: 14.21.2
+ SAPMACHINE_VERSION: 17.0.5
+ dockerfile: Dockerfile
+ mbt-node18-java19-docker:
+ platform: linux/amd64
+ build:
+ args:
+ NODE_VERSION: 18.13.0
+ SAPMACHINE_VERSION: 19.0.1
+ dockerfile: Dockerfile
+ mbt-node16-java19-docker:
+ platform: linux/amd64
+ build:
+ args:
+ NODE_VERSION: 16.19.0
+ SAPMACHINE_VERSION: 19.0.1
+ dockerfile: Dockerfile
+ mbt-node14-java19-docker:
+ platform: linux/amd64
+ build:
+ args:
+ NODE_VERSION: 14.21.2
+ SAPMACHINE_VERSION: 19.0.1
dockerfile: Dockerfile