zeebe學習(四)——docker+docker-compose(儲存庫)
在zeebe學習(一)中,我們在Linux虛擬機器上安裝了zeebe並部署了官方提供的工作流程,最後建立了工作流例項並執行。
但在本篇的學習中,將會把Zeebe與Docker結合起來使用,不僅可以實現部署工作流程,建立工作流例項並執行,還可以通過operate+Elasticsearch讓我們可以在瀏覽器上更加直觀地看到工作流例項的執行的過程。
首先,先來簡單瞭解一下以下的幾個元件:
-
Zeebe Modeler:一個桌面建模工具,在將其部署到Zeebe之前,我們將使用它來建立和配置工作流。
-
Zeebe發行版:Zeebe發行版包含工作流引擎,我們將在其中部署工作流模型。該引擎還負責管理活動工作流程例項的狀態。發行版中包括Zeebe CLI,我們將在整個教程中使用它。請使用Zeebe 0.20.0。
-
Camunda Operate:一種操作工具,用於監控Zeebe中的實時工作流例項並進行故障排除。Operate當前可免費且不受限制地用於非生產用途。
-
Elasticsearch 6.8.0:一個開放原始碼的分散式資料儲存,可以連線到Zeebe以儲存工作流資料以進行審計,視覺化,分析等。CamundaOperate使用Elasticsearch作為其基礎資料儲存,這就是為什麼您需要下載Elasticsearch才能完成本教程。Operate和Zeebe與Elasticsearch 6.8.0相容。
但是,我們使用Docker執行的話並不需要下載這幾個元件,只需要使用https://github.com/zeebe-io/zeebe-docker-compose
好的,簡單地瞭解之後,就開始在虛擬機器上實踐吧!
一、安裝好Docker環境
這裡就不再重複安裝的過程,直接檢視一下Docker的版本資訊。
二、將zeebe-docker-compose儲存庫克隆到本地計算機
git clone https://github.com/zeebe-io/zeebe-docker-compose
三、apt安裝docker-compose
sudo apt-get install docker-compose
安裝好之後,可以檢視一下docker-compose的版本資訊
docker-compose version
補充:
docker的版本過低(<5:0)會導致安裝失敗!
四、移動到zeebe-docker-compose/operate目錄下(與docker-compose.yml配置檔案同級目錄),並建立容器
cd ../zeebe-docker-compose/operate
docker-compose up -d #建立守護式容器
執行上述的命令後,docker會拉取配置檔案中指定的映象,並建立容器,輸出資訊如下圖所示:
補充報錯資訊:
1、我剛開始docker-compose使用的是1.25.5版本,執行docker-compose up -d命令是會報錯,報錯資訊如下:
配置檔案是存在是的,但是還是報錯了,沒搞明白,然後再另一個虛擬機器上換成1.17.1版本之後就沒有這個問題了,還不確定是不是版本問題導致的。
2、拉取映象超時
多執行幾次這個命令,就可以了。如果沒有配置/etc/docker/daemon.json,則需要配置一下加速映象。參考https://www.cnblogs.com/zrs123/p/14073507.html
好了,這時候就可以檢視一下容器是否已經建立完成:
可以看到容器已經成功建立並執行!
若想停止容器在後臺執行,則可以在這個目錄下執行以下命令:
docker-compose down
如果您還想清除永續性資料,請改用以下命令:
docker-compose down -v
五、在瀏覽器使用operate
地址輸入虛擬機器的IP地址和operate對映的埠號(8080),會出現登入介面,使用者名稱/密碼(demo/demo),如下圖如所示:
可以看到此時還沒有部署工作流程。
六、部署工作流程
開啟另一個終端,檢視zeebe代理的的狀態
./bin/zbctl --insecure status
部署官方提供的order-process.bpmn工作流程
./bin/zbctl --insecure deploy order-process.bpmn
這時候,到瀏覽器上看一下Operate使用者介面(忘記截圖了):
應該會出現如下的工作流程:
七、建立工作流例項
部署工作流後,我們可以建立它的新例項。工作流的每個例項都是工作流的單個執行。要建立一個新例項,我們必須從BPMN檔案中指定流程ID
./bin/zbctl --insecure create instance order-process --variables '{"orderId": 1234}'
檢視一下operate介面,發現工作流程已經開始,開始等待第一步collectmoney
八、完成工作流例項
./bin/zbctl --insecure create worker payment-service --handler cat &
檢視operate使用者介面,第一步完成
./bin/zbctl --insecure create worker inventory-service --handler cat &
再檢視一下operate使用者介面,第二步完成
./bin/zbctl --insecure create worker shipment-service --handler cat &
檢視operate使用者介面,第三步完成,工作流結束。
到此,就大功告成了!!!呼!長舒一口氣!