使用我们的 Docker 镜像是开始使用 ActiveMQ Artemis 最简单的方法之一。
1. 官方镜像
官方 Docker 镜像 可在 dockerhub 上获取。镜像与每个版本的其他发行版构件一起推送。使用此命令是最快、最简单的方法,它将创建并启动一个名为 mycontainer
的分离容器,公开主要消息端口(即 61616
)和 HTTP 端口(即 8161
),并在其终止时将其删除
$ docker run --detach --name mycontainer -p 61616:61616 -p 8161:8161 --rm apache/activemq-artemis:latest-alpine
代理启动后,您可以在 web 管理控制台 上打开 https://127.0.0.1:8161,并使用默认用户名和密码 artemis
登录。
您还可以使用 shell
命令使用默认用户名和密码 artemis
与正在运行的代理进行交互,例如:
$ docker exec -it mycontainer /var/lib/artemis-instance/bin/artemis shell --user artemis --password artemis
使用 shell
命令,您可以执行基本的任务,例如创建和删除地址和队列、发送和浏览消息、查看队列统计信息等。有关更多详细信息,请参阅 命令行界面 章。
您可以使用以下方法查看容器的日志:
$ docker logs -f mycontainer
使用以下方法停止容器:
$ docker stop mycontainer
官方 Docker 镜像使用 这些脚本 构建,您也可以使用这些脚本构建自己的镜像。继续阅读以了解更多详细信息。
2. 构建您自己的镜像
为了构建镜像,您需要一个 ActiveMQ Artemis 二进制发行版。这可以从本地(在这种情况下,您需要先构建项目)或远程基于官方 Apache 版本中获取。
2.1. 使用本地版本
如果您要使用本地二进制发行版,请从 ActiveMQ 源代码树的根目录构建它,例如:
$ mvn -Prelease package -DskipTests
构建完成后,发行版文件将位于您的本地发行版目录中。这里 <version>
是您构建的发行版版本。
artemis-distribution/target/apache-artemis-<version>-bin/apache-artemis-<version>
然后切换到 artemis-docker
目录,并使用 prepare-docker.sh
脚本以及适当的参数将 Docker 文件复制到您的本地二进制发行版中,例如:
$ cd artemis-docker
$ ./prepare-docker.sh --from-local-dist --local-dist-path ../artemis-distribution/target/apache-artemis-<version>-bin/apache-artemis-<version>/
这将复制构建任何预配置 Docker 镜像所需的所有文件,并为您提供其他说明。按照这些说明完成构建您想要的基于提供的 Docker 文件之一或您自己的文件的镜像。
2.2. 使用官方 Apache 版本
如果您希望在您的镜像中使用官方 Apache 版本而不是本地版本,请从 artemis-docker
目录运行以下命令,其中 <version>
是您想要使用的版本(例如 2.30.0
)
$ ./prepare-docker.sh --from-release --artemis-version <version>
这将复制构建任何预配置 Docker 镜像所需的所有文件,并为您提供其他说明。按照这些说明完成构建您想要的基于提供的 Docker 文件之一或您自己的文件的镜像。
2.3. 自定义镜像
2.3.1. 环境变量
环境变量决定运行 docker build
时用于 artemis create
命令的配置选项。可用的选项是
ARTEMIS_USER
-
管理员用户名。默认为
artemis
。 ARTEMIS_PASSWORD
-
管理员密码。默认为
artemis
。 ANONYMOUS_LOGIN
-
设置为
true
以允许匿名登录。默认为false
。 EXTRA_ARGS
-
发送到
artemis create
命令的附加参数。默认为--http-host 0.0.0.0 --relax-jolokia
。设置此值将覆盖默认值。有关可用选项,请参阅artemis create
的文档。
上述环境变量的组合会导致 docker-run.sh
脚本调用以下命令以在 Docker 容器第一次运行时创建代理实例
${ARTEMIS_HOME}/bin/artemis create --user ${ARTEMIS_USER} --password ${ARTEMIS_PASSWORD} --silent ${LOGIN_OPTION} ${EXTRA_ARGS}
注意:LOGIN_OPTION
根据 ANONYMOUS_LOGIN
的值,可以是 --allow-anonymous
或 --require-login
。
这些变量可以在相关 Dockerfile 中设置,例如,在命令行上设置,例如:
$ 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. 映射点
该镜像将使用 /var/lib/artemis-instance
目录来保存正在运行的代理的配置和数据。当您希望将配置和数据持久化在容器之外时,您可以将其映射到主机上的文件夹,例如:
docker run -it -p 61616:61616 -p 8161:8161 -v <broker folder on host>:/var/lib/artemis-instance apache/activemq-artemis:latest-alpine
在这种情况下,<broker folder on host>
是一个目录,代理实例应该保存在其中,并在每次运行时重新使用。
2.3.3. 覆盖 etc
文件夹中的文件
您可以使用自定义配置来配置 ActiveMQ Artemis 实例,方法是将驻留在 etc
文件夹中的文件替换为自定义文件,例如 broker.xml
或 artemis.profile
。将替换文件放在一个文件夹中,并将其作为卷映射到
/var/lib/artemis-instance/etc-override
etc-override
文件夹的内容将在实例创建后复制到 etc
文件夹,以便代理始终使用用户提供的配置启动。
如果您将整个 var/lib/artemis-instance
映射到外部文件夹以进行持久化,那么您可以在映射的文件夹中放置一个 etc-override
文件夹。它的内容将再次在创建实例后复制到 etc
文件夹中。