This is an automated email from the ASF dual-hosted git repository.
jbonofre pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq.git
The following commit(s) were added to refs/heads/main by this push:
new c4a2a80c52 feat(assembly): add Docker image build support via Maven
profile (#1701) (#1757)
c4a2a80c52 is described below
commit c4a2a80c5253735c09c15631a0c1da317f791362
Author: JB Onofré <[email protected]>
AuthorDate: Fri Mar 13 18:58:25 2026 +0100
feat(assembly): add Docker image build support via Maven profile (#1701)
(#1757)
* feat(assembly): add Docker image build support via Maven profile (#1701)
* feat(assembly): add multi platforms support (#1701)
* feat(assembly): add two Maven profiles for Docker: one to build
"locally", another to publish on DockerHub with multi-platforms (#1701)
* refactor(assembly): externalize Docker build configuration into Maven
properties
Move docker-maven-plugin version and Java version to parent pom properties,
parameterize the Dockerfile base image JDK version, and remove the unused
build.sh script now superseded by Maven profiles. (#1701)
---
assembly/pom.xml | 102 +++++++++++++++++++++++++++++++
assembly/src/docker/Dockerfile | 3 +-
assembly/src/docker/build.sh | 133 -----------------------------------------
pom.xml | 2 +
4 files changed, 106 insertions(+), 134 deletions(-)
diff --git a/assembly/pom.xml b/assembly/pom.xml
index e4a9922b4d..e4923b33e2 100644
--- a/assembly/pom.xml
+++ b/assembly/pom.xml
@@ -703,5 +703,107 @@
</plugins>
</build>
</profile>
+ <profile>
+ <id>docker</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>io.fabric8</groupId>
+ <artifactId>docker-maven-plugin</artifactId>
+ <version>${docker-maven-plugin-version}</version>
+ <configuration>
+ <images>
+ <image>
+ <name>apache/activemq:${project.version}</name>
+ <build>
+
<dockerFile>${project.basedir}/src/docker/Dockerfile</dockerFile>
+ <contextDir>${project.basedir}/src/docker</contextDir>
+ <args>
+ <java_version>${docker-java-version}</java_version>
+
<activemq_dist>_TMP_/apache-activemq.tar.gz</activemq_dist>
+ </args>
+ <assembly>
+ <name>_TMP_</name>
+ <inline>
+ <files>
+ <file>
+
<source>${project.build.directory}/apache-activemq-${project.version}-bin.tar.gz</source>
+ <destName>apache-activemq.tar.gz</destName>
+ <outputDirectory>.</outputDirectory>
+ </file>
+ </files>
+ </inline>
+ </assembly>
+ </build>
+ </image>
+ </images>
+ </configuration>
+ <executions>
+ <execution>
+ <id>docker-build</id>
+ <phase>package</phase>
+ <goals>
+ <goal>build</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>docker-deploy</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>io.fabric8</groupId>
+ <artifactId>docker-maven-plugin</artifactId>
+ <version>${docker-maven-plugin-version}</version>
+ <configuration>
+ <images>
+ <image>
+ <name>apache/activemq:${project.version}</name>
+ <build>
+
<dockerFile>${project.basedir}/src/docker/Dockerfile</dockerFile>
+ <contextDir>${project.basedir}/src/docker</contextDir>
+ <buildx>
+ <platforms>
+ <platform>linux/amd64</platform>
+ <platform>linux/arm64</platform>
+ </platforms>
+ </buildx>
+ <args>
+ <java_version>${docker-java-version}</java_version>
+
<activemq_dist>_TMP_/apache-activemq.tar.gz</activemq_dist>
+ </args>
+ <assembly>
+ <name>_TMP_</name>
+ <inline>
+ <files>
+ <file>
+
<source>${project.build.directory}/apache-activemq-${project.version}-bin.tar.gz</source>
+ <destName>apache-activemq.tar.gz</destName>
+ <outputDirectory>.</outputDirectory>
+ </file>
+ </files>
+ </inline>
+ </assembly>
+ </build>
+ </image>
+ </images>
+ </configuration>
+ <executions>
+ <execution>
+ <id>docker-deploy</id>
+ <phase>package</phase>
+ <goals>
+ <goal>build</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
</profiles>
</project>
diff --git a/assembly/src/docker/Dockerfile b/assembly/src/docker/Dockerfile
index c6b917a443..26d1206699 100644
--- a/assembly/src/docker/Dockerfile
+++ b/assembly/src/docker/Dockerfile
@@ -16,7 +16,8 @@
# limitations under the License.
################################################################################
-FROM eclipse-temurin:17-jre
+ARG java_version=17
+FROM eclipse-temurin:${java_version}-jre
# ActiveMQ environment variables
ENV ACTIVEMQ_INSTALL_PATH /opt
diff --git a/assembly/src/docker/build.sh b/assembly/src/docker/build.sh
deleted file mode 100755
index a16dc0e739..0000000000
--- a/assembly/src/docker/build.sh
+++ /dev/null
@@ -1,133 +0,0 @@
-#!/bin/sh
-
-################################################################################
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you 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.
-################################################################################
-
-usage() {
- cat <<HERE
-Usage:
- build.sh --from-local-dist [--archive <archive>] [--image-name <image>]
[--build-multi-platform <comma-separated platforms>]
- build.sh --from-release --activemq-version <x.x.x> [--image-name <image>]
[--build-multi-platform <comma-separated platforms>]
- build.sh --help
-
- If the --image-name flag is not used the built image name will be 'activemq'.
- Check the supported build platforms; you can verify with this command:
docker buildx ls
- The supported platforms (OS/Arch) depend on the build's base image, in this
case [eclipse-temurin:17-jre](https://hub.docker.com/_/eclipse-temurin).
-
-HERE
- exit 1
-}
-
-while [ $# -ge 1 ]
-do
-key="$1"
- case $key in
- --from-local-dist)
- FROM_LOCAL="true"
- ;;
- --from-release)
- FROM_RELEASE="true"
- ;;
- --image-name)
- IMAGE_NAME="$2"
- shift
- ;;
- --archive)
- ARCHIVE="$2"
- shift
- ;;
- --activemq-version)
- ACTIVEMQ_VERSION="$2"
- shift
- ;;
- --build-multi-platform)
- BUILD_MULTI_PLATFORM="$2"
- shift
- ;;
- --help)
- usage
- ;;
- *)
- # unknown option
- ;;
- esac
- shift
-done
-
-IMAGE_NAME=${IMAGE_NAME:-activemq}
-
-# TMPDIR must be contained within the working directory so it is part of the
-# Docker context. (i.e. it can't be mktemp'd in /tmp)
-TMPDIR=_TMP_
-
-cleanup() {
- rm -rf "${TMPDIR}"
-}
-trap cleanup EXIT
-
-mkdir -p "${TMPDIR}"
-
-if [ -n "${FROM_RELEASE}" ]; then
-
- [ -n "${ACTIVEMQ_VERSION}" ] || usage
-
- ACTIVEMQ_BASE_URL="https://dlcdn.apache.org/activemq/${ACTIVEMQ_VERSION}/"
- ACTIVEMQ_DIST_FILE_NAME="apache-activemq-${ACTIVEMQ_VERSION}-bin.tar.gz"
- CURL_OUTPUT="${TMPDIR}/${ACTIVEMQ_DIST_FILE_NAME}"
-
- echo "Downloading ${ACTIVEMQ_DIST_FILE_NAME} from ${ACTIVEMQ_BASE_URL}"
- curl -s "${ACTIVEMQ_BASE_URL}${ACTIVEMQ_DIST_FILE_NAME}" --output
"${CURL_OUTPUT}"
-
- ACTIVEMQ_DIST="${CURL_OUTPUT}"
-
-elif [ -n "${FROM_LOCAL}" ]; then
-
- if [ -n "${ARCHIVE}" ]; then
- DIST_DIR=${ARCHIVE}
- else
- DIST_DIR="target/apache-activemq-*.tar.gz"
- fi
- ACTIVEMQ_DIST=${TMPDIR}/apache-activemq.tar.gz
- echo "Using ActiveMQ dist: ${DIST_DIR}"
- cp ${DIST_DIR} ${ACTIVEMQ_DIST}
-
-else
-
- usage
-
-fi
-
-if [ -n "${BUILD_MULTI_PLATFORM}" ]; then
- echo "Checking if buildx installed..."
- VERSION_BUILD_X=$(docker buildx version) > /dev/null 2>&1
-
- if [ $? -eq 0 ]; then
- echo "Found buildx {${VERSION_BUILD_X}} on your docker system"
- echo "Starting build of the docker image for the platform
${BUILD_MULTI_PLATFORM}"
-
- BUILD_X="buildx"
- BUILD_X_FLAG="--push"
- BUILD_X_PLATFORM="--platform ${BUILD_MULTI_PLATFORM}"
- else
- echo "Error: buildx not installed with your docker system"
- exit 2
- fi
-
-fi
-
-docker ${BUILD_X} build ${BUILD_X_PLATFORM} --build-arg
activemq_dist="${ACTIVEMQ_DIST}" ${BUILD_X_FLAG} -t "${IMAGE_NAME}" .
diff --git a/pom.xml b/pom.xml
index 2745d05247..3a6935cbf0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -133,6 +133,8 @@
<sonar-maven-plugin-version>5.5.0.6356</sonar-maven-plugin-version>
<tools-maven-plugin-version>1.4</tools-maven-plugin-version>
<depends-maven-plugin-version>1.5.0</depends-maven-plugin-version>
+ <docker-maven-plugin-version>0.45.1</docker-maven-plugin-version>
+ <docker-java-version>17</docker-java-version>
<maven-project-info-reports-plugin-version>3.9.0</maven-project-info-reports-plugin-version>
<maven-graph-plugin-version>1.45</maven-graph-plugin-version>
<maven-core-version>3.9.14</maven-core-version>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact