Tars | Win10下Docker部署TarsJava(SpringBoot)全過程及踩坑記錄

多氯環己烷發表於2021-07-12

@


前言

受限於網上資源有限,加上小白一枚,筆者在Tars入門部署時踩了不少的坑,不過最終還是部署成功了,便想記錄一下其中過程與心得;

Win10下Docker部署TarsJava(SpringBoot)主要分為這幾部分:Docker部署,Tars部署以及測試,說難不難但裡邊處處埋坑,一不小心陷進去頭髮沒了幾斤……

這篇文章將從Docker開始描述筆者掉進去的坑,幫助小夥伴們閉坑。

統一說明:這些坑點問題均在2021年7月12號前發現,之後可能會優化,具體以官方訊息為準。

一些參考資料:
TarsdocGitHub線上文件
B站TarsJava入門實戰視訊
TarsJava GitHub地址


1. 相關環境版本:

為什麼要列出環境版本呢?是因為這裡邊有坑。

環境 對應版本
系統 Win10 21H1
Docker版本 20.10.7
JDK版本 1.8
SpringBoot版本 2.0.3.RELEASE
Maven版本 3.6.3
Tars版本 1.7.x(1.7.2)

坑點一:VMware與Win10 Docker衝突

大多數Windows作業系統的小夥伴電腦裡都會裝VMware虛擬機器跑Linux作業系統,這時如果想在Windows裡安裝Docker,你可能會發現:要麼安裝不了Docker,要麼安裝完後VMware不能使用了。具體來說是VMware的虛擬化方案與Windows的Hpyer-V衝突,不能共存。如果想要二者共存,可以採用以下方法:

  • 將VMware版本升級到15.5.5以上,同時Win10版本升級到20H1以上;

坑點二:20.版本TarsJava(SpringBoot)依賴檔案缺失

這個問題主要發生在Tars 2.0版本,如果你使用的是2.0版本,你會發現有些依賴標紅,無法從Maven中央倉庫自動匯入,這是因為中央倉庫還沒有這些依賴。
在這裡插入圖片描述

  • 解決方法有兩種,一是將Tars2.0版本所需的依賴自己通過install框架到本地,對於mvn來說package&install後可以正常使用;二是返回到1.7.2版本即可從中央倉庫拉取;

2. Docker安裝:

Docker相關安裝網上在資料與資源已經很足了,這裡只提一下筆者遇到的問題。

在Win10上安裝Docker需要開啟Windows本身的虛擬支援,哭具體操作是:

  • “左下角win圖示” - “設定” - “應用和功能” - 最下方“程式和功能” - “啟用或關閉Windows功能” - 開啟Hyper或相關虛擬功能;
  • 或者直接在Windows搜尋框中搜尋上述相關關鍵字進行後續操作;
  • 開啟後會要求重啟,等待重啟即可。
    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述

接下來到Docker官網下載Docker即可:Docker For Win


坑點三:Docker的映象預設安裝在C盤

Docker安裝無腦一直下一步即可,但它會預設將拉來的映象儲存在C盤(原目錄:C:\Users\使用者名稱\AppData\Local\Docker\wsl),我們可以通過wsl -l -v --all命令檢視:
在這裡插入圖片描述
docker-desktop用來存放程式,docker-desktop-data用來存放映象,如果希望它在其他盤,可以參考以下操作(以移動到新目錄:D:\program\wsl\為例);

  1. 匯出wsl子系統映象(備份到D:\program\wsl\目錄下),生成.tar壓縮包:
wsl --export docker-desktop "D:\program\wsl\docker-desktop\docker-desktop.tar"
wsl --export docker-desktop-data "D:\program\wsl\docker-desktop-data\docker-desktop-data.tar"
  1. 刪除現有的wsl子系統,原目錄下的ext4.vhdx檔案會被刪除:
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data
  1. 重新建立wsl子系統,在新目錄下生成ext4.vhdx檔案:
wsl --import docker-desktop "D:\program\wsl\docker-desktop" "D:\program\wsl\docker-desktop\docker-desktop.tar" --version 2
wsl --import docker-desktop-data "D:\program\wsl\docker-desktop-data" "D:\program\wsl\docker-desktop-data\docker-desktop-data.tar" --version 2

以上三步就能將wsl子系統轉移到D盤下的\program\wsl\目錄了,如果想要驗證是否成功,可以使用docker隨便拉取一個映象,看看原目錄C:\Users\使用者名稱\AppData\Local\Docker\wsl新目錄D:\program\wsl在拉取前後的檔案大小,若在拉取後原目錄大小不變,新目錄增大,就成功了。

  • 成功後,新目錄下的兩個.tar備份檔案可以刪除了。

3. Tars部署:

使用docker部署Tars,基本上是一鍵式解決,但這其中也有一些需要注意的點,

1. 先拉取三個映象(MySQL、Tars框架、Tars結點):

#拉取最新的映象
docker pull tarscloud/framework:latest
#拉取節點映象
docker pull tarscloud/tars-node:latest
#拉取資料庫映象
docker pull   mysql:5.6

2. 建立虛擬網路:

docker network create -d bridge --subnet=172.25.0.0/16 --gateway=172.25.0.1 tars

3. 啟動資料庫:

docker run -d \
--net=tars \
-e MYSQL_ROOT_PASSWORD="root@appinside" \
--ip="172.25.0.2" \
--name=tars-mysql \
mysql:5.6

4. 等待30s,資料庫啟動需要時間:

可以進到docker裡檢視MySQL的日誌資訊,如下則啟動成功:
在這裡插入圖片描述
5. 啟動Tars框架:

docker run -d \
--net=tars \
-e MYSQL_HOST=172.25.0.2 \
-e MYSQL_ROOT_PASSWORD="root@appinside" \
-eREBUILD=false  -eSLAVE=false \
-e INET=eth0 \
--ip="172.25.0.4" \
-p 3000-3001:3000-3001 \
tarscloud/framework

6. 等待60s,框架啟動需要時間:

可以進到Docker裡檢視框架的日誌資訊,如下則啟動成功:

在這裡插入圖片描述
7. 啟動Tars結點:

啟動web請求
docker run -d --net=tars --ip="172.25.0.3" -eWEB_HOST=http://172.25.0.4:3000 tarscloud/tars-node

8. Docker日誌如下則成功:
在這裡插入圖片描述
9. 訪問http:{"你的主機ip"}:3000,設定登入密碼,使用者名稱為admin

若出現如下畫面,恭喜你,Tars部署成功!
在這裡插入圖片描述

10. 點選運維管理,按照如下圖片進行配置:

需要注意紅框的兩個名字,服務名為將來打成jar包的檔名,OBJ為介面名。Tars是根據應用.服務名稱.OJB來定址的。

填寫完配置資訊後,點選獲取埠可以自動獲取埠,接著點選確認 - 部署,即可完成服務端與客戶端的部署。

  • 服務端配置:
    在這裡插入圖片描述
  • 客戶端配置:
    在這裡插入圖片描述

坑點四:Tars框架MySQL密碼錯誤

官方文件的shell命令與筆者上述第五點在MySQL密碼上略有不同;

  • 文件上是:-e MYSQL_ROOT_PASSWORD='root@appinside' \
  • 筆者是:-e MYSQL_ROOT_PASSWORD="root@appinside" \

筆者使用官方的語句,發生如下錯誤導致框架起不來:
在這裡插入圖片描述
猜測是win10與Linux命令語法不同導致,因此將單引號改成雙引號,與資料庫那裡的配置統一。


4. 程式碼處理:

Tars部署好後就可以上傳程式碼了,可以自己寫也可以使用官方examples,這裡筆者使用官方examples作為演示。

1. 首先進入TarsJava GitHub官方地址,點進examples:https://github.com/TarsCloud/TarsJava

在這裡插入圖片描述

2. 在這裡我們僅關注以下三個SpringBoot檔案:
在這裡插入圖片描述

3. Idea開啟server檔案(服務端)

對於服務端,需要修改的地方只有一處,即:OJB介面名,這裡要與上述服務端配置的OJB名對應。然後打包即可。
在這裡插入圖片描述
打包完後修改打包後的資料夾名為服務名
在這裡插入圖片描述
回到Tars平臺,選擇之前配置好的服務,點選發布管理,選中服務節點,點選“釋出選中節點”:

在這裡插入圖片描述
點選上傳包,然後選中我們改好名字的服務包檔案。

在這裡插入圖片描述

在這裡插入圖片描述
檔案上傳後會生成一個時間戳選項,選擇後釋出即可;
在這裡插入圖片描述
當螢幕中顯示三個Active時表明服務上傳成功。
在這裡插入圖片描述

4. Idea開啟client檔案(客戶端)

客戶端包上傳與服務端類似,只不過需要修改以下兩個地方:

在這裡插入圖片描述

需要注意2.匹配服務名可以從以下地方檢視:

選中服務端,點選服務管理,點選管理Servant;
在這裡插入圖片描述
複製紅框內的內容,Ctrl CV到程式碼裡即可;
在這裡插入圖片描述

後續步驟就跟服務端一樣了,這裡就不囉嗦了,這裡放上一張客戶端成功釋出包圖。
在這裡插入圖片描述


坑點五:釋出包與服務名不匹配

這個問題是沒有修改釋出包名為服務名,這點在官方GitHub文件上沒有提及,可能是新版本特性吧:
在這裡插入圖片描述

  • 將打包名.jar,該為服務名即可:
    在這裡插入圖片描述(將Server1改成Server,Server1為筆者故意寫錯做演示用)

坑點六:[alarm] down, server is inactive

筆者在進行部署是經常遇到的這個錯誤:
在這裡插入圖片描述
這個錯誤的原因很大概率是因為自己的程式碼有問題,筆者在這裡遇到的問題有:

  • 打包時文件檢驗出現錯誤;
  • 沒有配置Obj介面;
  • SpringBoot依賴檔案找不到等;

這個問題需要認真檢查程式碼。

在這裡插入圖片描述(這裡筆者故意將MyServer.Server.ServerObj改成MyServer.Server.ServerObj1,以演示錯誤。)


5. 介面除錯:

服務包上傳進Tars是否成功,可以通過介面除錯是否成功判斷。

下面以服務端為例,客戶端相同:

首先進入介面除錯,點選新增;
在這裡插入圖片描述
接著上傳.tars檔案,該檔案在..\src\main\resources目錄下,客戶端上傳hello.tars檔案,服務端上傳client.tars檔案。

在這裡插入圖片描述
上傳完後點選除錯:
在這裡插入圖片描述

按照下圖進行操作即可檢視除錯結果。
在這裡插入圖片描述



最後

新人制作,如有錯誤,歡迎指出,感激不盡!
歡迎關注公眾號,會分享一些更日常的東西!
如需轉載,請標註出處!
Tars | Win10下Docker部署TarsJava(SpringBoot)全過程及踩坑記錄

相關文章