mirror of https://github.com/apache/activemq.git
Add docker resources for ActiveMQ 5.x
This commit is contained in:
parent
af791740f9
commit
fab06faace
|
@ -0,0 +1,40 @@
|
||||||
|
################################################################################
|
||||||
|
# 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.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
FROM eclipse-temurin:11-jre
|
||||||
|
|
||||||
|
# ActiveMQ environment variables
|
||||||
|
ENV ACTIVEMQ_INSTALL_PATH /opt
|
||||||
|
ENV ACTIVEMQ_HOME $ACTIVEMQ_INSTALL_PATH/apache-activemq
|
||||||
|
ENV ACTIVEMQ_EXEC exec
|
||||||
|
ENV PATH $PATH:$ACTIVEMQ_HOME/bin
|
||||||
|
# Make the Web console accessible from outside the container
|
||||||
|
ENV ACTIVEMQ_OPTS $ACTIVEMQ_OPTS -Djetty.host=0.0.0.0
|
||||||
|
#WORKDIR $ACTIVEMQ_HOME
|
||||||
|
|
||||||
|
# activemq_dist can point to a directory or a tarball on the local system
|
||||||
|
ARG activemq_dist=NOT_SET
|
||||||
|
|
||||||
|
# Install build dependencies and activemq
|
||||||
|
ADD $activemq_dist $ACTIVEMQ_INSTALL_PATH
|
||||||
|
RUN set -x && \
|
||||||
|
cp -r $ACTIVEMQ_INSTALL_PATH/apache-activemq-* $ACTIVEMQ_HOME && \
|
||||||
|
rm -r $ACTIVEMQ_INSTALL_PATH/apache-activemq-*
|
||||||
|
|
||||||
|
EXPOSE 8161 61616 5672 61613 1883 61614
|
||||||
|
CMD ["activemq", "console"]
|
|
@ -0,0 +1,154 @@
|
||||||
|
<!--
|
||||||
|
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.
|
||||||
|
-->
|
||||||
|
# Apache ActiveMQ docker
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Install the most recent stable version of docker
|
||||||
|
https://docs.docker.com/installation/
|
||||||
|
|
||||||
|
Install the most recent stable version of docker-compose
|
||||||
|
https://docs.docker.com/compose/install/
|
||||||
|
|
||||||
|
If you want to build multi-platform (OS/Arch) Docker images, then you must install
|
||||||
|
[`buildx`](https://docs.docker.com/buildx/working-with-buildx/).
|
||||||
|
On macOS, an easy way to install `buildx` is to install [Docker Desktop Edge](https://docs.docker.com/docker-for-mac/edge-release-notes/).
|
||||||
|
|
||||||
|
## Build
|
||||||
|
|
||||||
|
Images are based on the Docker official [Eclipse Temurin 11 JRE](https://hub.docker.com/_/eclipse-temurin/tags?page=1&name=11-jre) image. If you want to
|
||||||
|
build the ActiveMQ image you have the following choices:
|
||||||
|
|
||||||
|
1. Create the docker image from a local distribution package
|
||||||
|
2. Create the docker image from an Apache ActiveMQ archive, for example (apache-activemq-5.18.1.tar.gz)
|
||||||
|
3. Create the docker image from a specific version of Apache ActiveMQ
|
||||||
|
4. Create the docker image from remote or local custom Apache ActiveMQ distribution
|
||||||
|
|
||||||
|
If you run `build.sh` without arguments then you could see how to usage this command.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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:11-jre](https://hub.docker.com/_/eclipse-temurin).
|
||||||
|
```
|
||||||
|
|
||||||
|
To create the docker image from local distribution) you can execute the command
|
||||||
|
below. Remember that before you can successfully run this command, you must build
|
||||||
|
the project (for example with the command `mvn clean install -DskipTests`).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./build.sh --from-local-dist
|
||||||
|
```
|
||||||
|
|
||||||
|
For create the docker image from the local dist version but with the archive,
|
||||||
|
you can execute the below command. Remember that before you can successfully run
|
||||||
|
this command.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./build.sh --from-local-dist --archive ~/path/to/apache-activemq-5.18.1.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also specify the image name with the `--image-name` flag, for example
|
||||||
|
(replacing the version, image name, and targets as appropriate):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./build.sh --from-local-dist --archive ~/Downloads/apache-activemq-5.18.1.tar.gz --image-name myrepo/myamq:x.x.x
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want to build the docker image for a specific version of ActiveMQ
|
||||||
|
you can run `build.sh` command in this way (replacing the version, image name,
|
||||||
|
and targets as appropriate):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./build.sh --from-release --activemq-version 5.18.1 --image-name myrepo/myamq:x.x.x
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want to build the container for a specific version of ActiveMQ and
|
||||||
|
specific version of the platform, and push the image to the Docker Hub repository,
|
||||||
|
you can use this command (replacing the version, image name, and targets as appropriate):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./build.sh --from-release --activemq-version 5.18.1 --image-name myrepo/myamq:x.x.x \
|
||||||
|
--build-multi-platform linux/arm64,linux/arm/v7,linux/amd64
|
||||||
|
```
|
||||||
|
|
||||||
|
Below is the output you should get from running the previous command.
|
||||||
|
|
||||||
|
```
|
||||||
|
Downloading apache-activemq-5.18.1.tar.gz from https://downloads.apache.org/activemq/5.18.1/
|
||||||
|
Checking if buildx installed...
|
||||||
|
Found buildx {github.com/docker/buildx v0.3.1-tp-docker 6db68d029599c6710a32aa7adcba8e5a344795a7} on your docker system
|
||||||
|
Starting build of the docker image for the platform linux/arm64,linux/arm/v7,linux/amd64
|
||||||
|
[+] Building 15.8s (16/16) FINISHED
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
## Run
|
||||||
|
|
||||||
|
* Run ActiveMQ
|
||||||
|
|
||||||
|
```
|
||||||
|
docker-compose run activemq activemq
|
||||||
|
```
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
```
|
||||||
|
docker run --name activemq activemq activemq
|
||||||
|
```
|
||||||
|
|
||||||
|
* Run ActiveMQ as a daemon
|
||||||
|
|
||||||
|
```
|
||||||
|
docker-compose up
|
||||||
|
```
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
```
|
||||||
|
docker run --name activemq
|
||||||
|
```
|
||||||
|
|
||||||
|
* Kill ActiveMQ
|
||||||
|
|
||||||
|
```
|
||||||
|
docker-compose kill
|
||||||
|
```
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
```
|
||||||
|
docker kill activemq
|
||||||
|
```
|
||||||
|
|
||||||
|
### Ports
|
||||||
|
|
||||||
|
* ActiveMQ web console on `8161`
|
||||||
|
* ActiveMQ tcp connector on `61616`
|
||||||
|
* ActiveMQ AMQP connector on `5672`
|
||||||
|
* ActiveMQ STOMP connector on `61613`
|
||||||
|
* ActiveMQ MQTT connector on `1883`
|
||||||
|
* ActiveMQ WS connector on `61614`
|
||||||
|
|
||||||
|
Edit the `docker-compose.yml` file to edit port settings.
|
|
@ -0,0 +1,133 @@
|
||||||
|
#!/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:11-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}" .
|
|
@ -0,0 +1,39 @@
|
||||||
|
################################################################################
|
||||||
|
# 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.
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
version: "2.1"
|
||||||
|
services:
|
||||||
|
activemq:
|
||||||
|
image: ${ACTIVEMQ_DOCKER_IMAGE_NAME:-activemq}
|
||||||
|
expose:
|
||||||
|
- "61616"
|
||||||
|
- "5672"
|
||||||
|
- "61613"
|
||||||
|
- "1883"
|
||||||
|
- "61614"
|
||||||
|
- "8161"
|
||||||
|
ports:
|
||||||
|
- "8161:8161"
|
||||||
|
- "61616:61616"
|
||||||
|
- "5672:5672"
|
||||||
|
- "61613:61613"
|
||||||
|
- "1883:1883"
|
||||||
|
- "61614:61614"
|
||||||
|
command: activemq console
|
||||||
|
stdin_open: true
|
||||||
|
tty: true
|
Loading…
Reference in New Issue