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


Reply via email to