One of the simplest ways to get started with ActiveMQ Artemis is by using one of our Docker images.
1. Official Images
Official Docker images are available on dockerhub. Images are pushed along with all the other distribution artifacts for every release. The fastest, simplest way to get started is with this command which will create and start a detached container named mycontainer
, expose the main messaging port (i.e. 61616
) and HTTP port (i.e. 8161
), and remove it when it terminates:
$ docker run --detach --name mycontainer -p 61616:61616 -p 8161:8161 --rm apache/activemq-artemis:latest-alpine
Once the broker starts you can open the web management console at http://localhost:8161 and log in with the default username & password artemis
.
You can also use the shell
command to interact with the running broker using the default username & password artemis
, e.g.:
$ docker exec -it mycontainer /var/lib/artemis-instance/bin/artemis shell --user artemis --password artemis
Using the shell
command you can execute basic tasks like creating & deleting addresses and queues, sending and browsing messages, viewing queue statistics, etc. See the Command Line Interface chapter for more details.
You can view the container’s logs using:
$ docker logs -f mycontainer
Stop the container using:
$ docker stop mycontainer
The official Docker images are built using these scripts which you can also use to build your own images. Read on for more details.
2. Build your own Image
In order to build an image you need an ActiveMQ Artemis binary distribution. This can be sourced locally (in which case you need to build the project first) or remotely based on an official Apache release.
2.1. Using a Local Release
If you want to use a local binary distribution then build it from the root of the ActiveMQ source tree, e.g.:
$ mvn -Prelease package -DskipTests
Following the build the distribution files will be in your local distribution directory. Here <version>
is the version of the distribution that you built.
artemis-distribution/target/apache-artemis-<version>-bin/apache-artemis-<version>
Then switch to the artemis-docker
directory and use the prepare-docker.sh
script with the proper parameters to copy the Docker files into your local binary distribution, e.g.:
$ cd artemis-docker
$ ./prepare-docker.sh --from-local-dist --local-dist-path ../artemis-distribution/target/apache-artemis-<version>-bin/apache-artemis-<version>/
This will copy all the files necessary to build any of the pre-configured Docker images and provide you with additional instructions. Follow these instructions to finish building the image you want based on one of the provided Docker files or even one of your own.
2.2. Using an Official Apache Release
If you would rather use an official Apache release in your image rather than a local release then run the following command from the artemis-docker
directory where <version>
is the release version you wish to use (e.g. 2.30.0
):
$ ./prepare-docker.sh --from-release --artemis-version <version>
This will copy all the files necessary to build any of the pre-configured Docker images and provide you with additional instructions. Follow these instructions to finish building the image you want based on one of the provided Docker files or even one of your own.
2.3. Customizing the Image
2.3.1. Environment Variables
Environment variables determine the options configured for the artemis create
command when running docker build
. The available options are:
ARTEMIS_USER
The administrator username. The default is artemis
.
ARTEMIS_PASSWORD
The administrator password. The default is artemis
.
ANONYMOUS_LOGIN
Set to true
to allow anonymous logins. The default is false
.
EXTRA_ARGS
Additional arguments sent to the artemis create
command. The default is --http-host 0.0.0.0 --relax-jolokia
. Setting this value will override the default. See the documentation on artemis create
for available options.
The combination of the above environment variables results in the docker-run.sh
script calling the following command to create the broker instance the first time the Docker container runs:
${ARTEMIS_HOME}/bin/artemis create --user ${ARTEMIS_USER} --password ${ARTEMIS_PASSWORD} --silent ${LOGIN_OPTION} ${EXTRA_ARGS}
Note: LOGIN_OPTION
is either --allow-anonymous
or --require-login
depending on the value of ANONYMOUS_LOGIN
.
These variables can be set in the relevant Dockerfile or, for example, on the command-line, e.g.:
$ docker run -e ARTEMIS_USER=myUser -e ARTEMIS_PASSWORD=myPass --name mycontainer -it -p 61616:61616 -p 8161:8161 apache/activemq-artemis:latest-alpine
2.3.2. Mapping point
The image will use the directory /var/lib/artemis-instance
to hold the configuration and the data of the running broker. You can map this to a folder on the host for when you want the configuration and data persisted outside of a container, e.g.:
docker run -it -p 61616:61616 -p 8161:8161 -v <broker folder on host>:/var/lib/artemis-instance apache/activemq-artemis:latest-alpine
In this case the value <broker folder on host>
is a directory where the broker instance is supposed to be saved and reused on each run.
2.3.3. Overriding files in etc folder
You can use customized configuration for the ActiveMQ Artemis instance by replacing the files residing in the etc
folder with the custom ones, e.g. broker.xml
or artemis.profile
. Put the replacement files inside a folder and map it as a volume to:
/var/lib/artemis-instance/etc-override
The contents of etc-override
folder will be copied over to etc
folder after the instance creation so that the broker will always start with user-supplied configuration.
It you are mapping the whole var/lib/artemis-instance
to an outside folder for persistence then you can place an etc-override
folder inside the mapped one. Its contents will again be copied over etc
folder after creating the instance.