-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add docker resources for ActiveMQ 5.x
- Loading branch information
Showing
4 changed files
with
366 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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}" . |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |