開始使用 ActiveMQ Artemis 最簡單的方法之一是使用我們的 Docker 映像檔。

1. 官方映像檔

官方 Docker 映像檔可在 dockerhub 上取得。映像檔會隨著每個版本的其他發行構件一起推送。最快、最簡單的開始方式是使用以下命令,它將建立並啟動一個名為 mycontainer 的分離容器,公開主要訊息傳遞埠 (即 61616) 和 HTTP 埠 (即 8161),並在終止時移除它

$ docker run --detach --name mycontainer -p 61616:61616 -p 8161:8161 --rm apache/activemq-artemis:latest-alpine

一旦 Broker 啟動,您就可以在 https://127.0.0.1:8161 開啟 Web 管理主控台,並使用預設的使用者名稱和密碼 artemis 登入。

您也可以使用 shell 命令,使用預設的使用者名稱和密碼 artemis 與正在執行的 Broker 互動,例如:

$ 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 buildartemis 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 容器第一次執行時呼叫以下命令來建立 Broker 執行個體

${ARTEMIS_HOME}/bin/artemis create --user ${ARTEMIS_USER} --password ${ARTEMIS_PASSWORD} --silent ${LOGIN_OPTION} ${EXTRA_ARGS}

注意:LOGIN_OPTION--allow-anonymous--require-login,具體取決於 ANONYMOUS_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 來保存正在執行的 Broker 的設定和資料。當您希望在容器外部保存設定和資料時,您可以將其對應到主機上的資料夾,例如:

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> 是一個目錄,Broker 執行個體應保存並在每次執行時重複使用。

2.3.3. 覆寫 etc 資料夾中的檔案

您可以透過將位於 etc 資料夾中的檔案替換為自訂檔案 (例如 broker.xmlartemis.profile) 來使用 ActiveMQ Artemis 執行個體的自訂設定。將替換檔案放入資料夾中,並將其對應為磁碟區到

/var/lib/artemis-instance/etc-override

etc-override 資料夾的內容將在建立執行個體後複製到 etc 資料夾,以便 Broker 始終使用使用者提供的設定啟動。

如果您為了持久性將整個 var/lib/artemis-instance 對應到外部資料夾,那麼您可以在對應的資料夾內放置一個 etc-override 資料夾。它的內容將在建立執行個體後再次複製到 etc 資料夾。