博客 / 詳情

返回

使用 deploy 工具部署tio-boot

tio-boot官網

使用 deploy 工具部署

deploy 工具簡介

為了簡化部署流程,提高部署效率,我開發了一款名為 deploy 的工具,用於將 tio-boot 工程快速部署到自有服務器上。該工具分為客户端和服務端,用户需要先在服務器上安裝服務端,才能通過客户端進行部署操作。工具已開源,源碼地址如下:

  • deploy 工具
  • deploy-server 工具

服務端安裝

關於如何安裝服務端的詳細步驟請參閲項目文檔,此處略過。

deploy 工具使用

打包配置文件 .build.txt

該文件用於配置項目在不同操作系統上的打包命令,示例如下:

[win.env]
set JAVA_HOME=D:\java\jdk1.8.0_121

[win.build]
mvn clean package -DskipTests -Pproduction

[linux.env]
export JAVA_HOME=/usr/java/jdk1.8.0_121

[linux.build]
mvn clean package -DskipTests -Pproduction

[mac.env]
set JAVA_HOME=~/java/jdk1.8.0_121

[mac.build]
mvn clean package -DskipTests -Pproduction

此文件定義了在 Windows、Linux 和 macOS 系統上的 Java 環境變量配置及 Maven 打包命令,確保在各平台下能正確構建項目。

部署配置文件 .deploy.toml

部署配置文件用於定義不同環境的部署操作,示例如下:

[dev.upload-run]
url = "http://192.168.1.2:10405/deploy/file/upload-run/"
p = "123456"
b = ".build.txt"
z ="app.zip target/dynamic-css-1.0.0.jar"
file = "app.zip"
d = "unzip/dynamic-css"
c1 = "mkdir -p /data/apps/dynamic-css"
c2 = "[ -d /data/apps/dynamic-css ] && cp -r /data/apps/dynamic-css backup/dynamic-css-backup-$(date +'%Y%m%d_%H%M%S')"
c3 = "cp unzip/dynamic-css/target/dynamic-css-1.0.0.jar /data/apps/dynamic-css/"
c4 = "if [ $(docker ps -q -f name=dynamic-css) ]; then docker stop dynamic-css && docker rm -f dynamic-css; fi"
c5 = "cd /data/apps/dynamic-css && docker run -dit --name dynamic-css --restart=always --net=host -v $(pwd):/app -w /app -e TZ=Asia/Shanghai -e LANG=C.UTF-8 litongjava/jdk:8u391-stable-slim java -jar dynamic-css-1.0.0.jar"
c = "docker ps |grep dynamic-css"

該配置文件定義了 dev(開發)、test(測試)和 prod(生產)三個環境下的部署流程。以 dev.upload-run 為例,解釋如下:

  • url: 上傳文件的服務端地址。
  • p: 密碼,用於身份驗證。
  • b: 指定打包配置文件。
  • z: 指定需要壓縮的文件列表。
  • file: 指定上傳的壓縮包文件名。
  • d: 解壓路徑。
  • c1-c5: 一系列的 Shell 命令,用於創建目錄、備份舊版本、複製新文件、停止並刪除舊容器、啓動新容器等操作。
  • c: 最終檢查容器是否成功啓動的命令。

執行部署命令

通過命令行工具 deploy,可以輕鬆地在不同環境中執行部署操作:

  • 開發環境:

    deploy
  • 測試環境:

    deploy -e test
  • 生產環境:

    deploy -e prod

運行流程

deploy 工具的運行流程如下:

  1. 編譯: 根據 .build.txt 配置進行項目編譯。
  2. 壓縮打包: 將編譯生成的文件壓縮為 .zip 包。
  3. 上傳解壓: 將壓縮包上傳至服務器並解壓。
  4. 備份舊目錄: 將舊版本備份,以便回滾操作。
  5. 複製到指定目錄: 將新文件複製到指定的部署目錄中。
  6. 刪除舊容器: 停止並刪除舊的 Docker 容器。
  7. 啓動新容器: 使用新的鏡像和配置啓動新的 Docker 容器。
  8. 檢查容器: 最終檢查新容器是否成功啓動。

部署成功後的反饋信息

部署成功後,deploy 工具會返回相關的執行信息,例如:

response status code: 200
{"success":true,"output":"7636aec41b4b   litongjava/jdk:8u391-stable-slim        \"java -jar dynamic-c…\"   Less than a second ago   Up Less than a second dynamic-css\n","time":0}

這段信息表明新容器已成功啓動,運行狀態正常。

完整的部署文件

[dev.upload-run]
url = "http://192.168.1.2:10405/deploy/file/upload-run/"
p = "123456"
b = ".build.txt"
z ="app.zip target/dynamic-css-1.0.0.jar"
file = "app.zip"
d = "unzip/dynamic-css"
c1 = "mkdir -p /data/apps/dynamic-css"
c2 = "[ -d /data/apps/dynamic-css ] && cp -r /data/apps/dynamic-css backup/dynamic-css-backup-$(date +'%Y%m%d_%H%M%S')"
c3 = "cp unzip/dynamic-css/target/dynamic-css-1.0.0.jar /data/apps/dynamic-css/"
c4 = "if [ $(docker ps -q -f name=dynamic-css) ]; then docker stop dynamic-css && docker rm -f dynamic-css; fi"
c5 = "cd /data/apps/dynamic-css && docker run -dit --name dynamic-css --restart=always --net=host -v $(pwd):/app -w /app -e TZ=Asia/Shanghai -e LANG=C.UTF-8 litongjava/jdk:8u391-stable-slim java -jar dynamic-css-1.0.0.jar"
c = "docker ps |grep dynamic-css"

[test.upload-run]
url = "http://xxxx:10405/deploy/file/upload-run/"
p = "xxxx"
b = ".build.txt"
z ="app.zip target/dynamic-css-1.0.0.jar"
file = "app.zip"
d = "unzip/dynamic-css"
c1 = "mkdir -p /data/apps/dynamic-css"
c2 = "[ -d /data/apps/dynamic-css ] && cp -r /data/apps/dynamic-css backup/dynamic-css-backup-$(date +'%Y%m%d_%H%M%S')"
c3 = "cp unzip/dynamic-css/target/dynamic-css-1.0.0.jar /data/apps/dynamic-css/"
c4 = "if [ $(docker ps -q -f name=dynamic-css) ]; then docker stop dynamic-css && docker rm -f dynamic-css; fi"
c5 = "cd /data/apps/dynamic-css && docker run -dit --name dynamic-css --restart=always --net=host -v $(pwd):/app -w /app -e TZ=Asia/Shanghai -e LANG=C.UTF-8 litongjava/jdk:8u391-stable-slim java -jar dynamic-css-1.0.0.jar --app.env=test"
c = "docker ps |grep dynamic-css"

[prod.upload-run]
url = "http://xxxx:10405/deploy/file/upload-run/"
p = "xxxx"
b = ".build.txt"
z ="app.zip target/dynamic-css-1.0.0.jar"
file = "app.zip"
d = "unzip/dynamic-css"
c1 = "mkdir -p /data/apps/dynamic-css"
c2 = "[ -d /data/apps/dynamic-css ] && cp -r /data/apps/dynamic-css backup/dynamic-css-backup-$(date +'%Y%m%d_%H%M%S')"
c3 = "cp unzip/dynamic-css/target/dynamic-css-1.0.0.jar /data/apps/dynamic-css/"
c4 = "if [ $(docker ps -q -f name=dynamic-css) ]; then docker stop dynamic-css && docker rm -f dynamic-css; fi"
c5 = "cd /data/apps/dynamic-css && docker run -dit --name dynamic-css --restart=always --net=host -v $(pwd):/app -w /app -e TZ=Asia/Shanghai -e LANG=C.UTF-8 litongjava/jdk:8u391-stable-slim java -jar dynamic-css-1.0.0.jar --app.env=prod"
c = "docker ps |grep dynamic-css"
user avatar lankerens 頭像 dm2box 頭像 edagarli 頭像 yadong_zhang 頭像 huzilachadedanche 頭像 knifeblade 頭像 u_16213560 頭像 lianhuatongzina 頭像 mysteryjack 頭像 willliaowh 頭像 iot_full_stack 頭像 fu_623f04ad34d53 頭像
17 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.