開始使用 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 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 容器第一次執行時呼叫以下命令來建立 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.xml
或 artemis.profile
) 來使用 ActiveMQ Artemis 執行個體的自訂設定。將替換檔案放入資料夾中,並將其對應為磁碟區到
/var/lib/artemis-instance/etc-override
etc-override
資料夾的內容將在建立執行個體後複製到 etc
資料夾,以便 Broker 始終使用使用者提供的設定啟動。
如果您為了持久性將整個 var/lib/artemis-instance
對應到外部資料夾,那麼您可以在對應的資料夾內放置一個 etc-override
資料夾。它的內容將在建立執行個體後再次複製到 etc
資料夾。