UStackUStack
zero icon

zero

用一條命令把任意 Docker 映像部署到自家伺服器,含自動 HTTPS、健康檢查零停機切換、預覽環境與回滾。

zero

什麼是 zero (ShipZero)?

zero 是一個單一伺服器部署引擎,用於在自家基礎設施上運行 Docker 映像。它提供命令列工作流程來部署映像、自動配置 HTTPS,並在健康檢查後路由流量。

核心目的是移除從容器映像到即時端點的常見設定任務—無需設定檔、網頁 UI 或 YAML。它也支援使用相同命令導向方式進行預覽部署與回滾。

主要功能

  • 1 命令從容器映像部署:使用 zero deploy 部署任意 Docker 映像(例如 ghcr.io/...),並處理應用程式埠偵測。
  • 自動 HTTPS 與 HTTP 重新導向:透過 Let’s Encrypt 配置 HTTPS,並在部署流程中啟用 HTTP → HTTPS 重新導向。
  • 健康檢查零停機流量切換:在新容器啟動於暫時埠、執行 TCP 或 HTTP 健康檢查後,若檢查通過才切換流量。
  • 預覽環境:使用 --preview <name>(例如 pr-21)建立臨時部署及其專屬子網域;預覽部署會自動過期。
  • 即時回滾zero rollback <app> 啟動先前映像、執行健康檢查並切換流量;若檢查失敗則不套用變更。
  • 即時終端機指標與日誌:串流 CPU、記憶體與網路統計至終端機,並可使用 zero logs --server 串流伺服器日誌。
  • Webhook 自動部署:使用 HMAC-SHA256 驗證簽署 webhook 請求,並可從映像庫事件觸發部署;不符標籤會建立預覽部署。
  • 多容器應用程式支援 Docker Compose:指定入口服務與名稱部署 Docker Compose 檔案,同時處理拉取、啟動、健康檢查與路由。

如何使用 zero

  1. 設定伺服器:需要 Linux VPS 與網域。
  2. 安裝 zero
    • 在 VPS 上:curl -fsSL https://shipzero.sh/install.sh | sudo bash
    • 在本地機器(CLI):curl -fsSL https://shipzero.sh/cli/install.sh | bash
  3. SSH 連線zero login <email-or-identifier>(例如 zero login [email protected])。
  4. 部署映像zero deploy <image-reference>(例如 zero deploy ghcr.io/shipzero/demo:latest)。
  5. 驗證輸出:健康檢查後,zero 會印出即時 URL(依網域與偵測應用埠)。

預覽部署使用 --preview(例如 zero deploy demo --preview pr-21)。回滾執行 zero rollback <app>

使用情境

  • 部署單一 Docker 網頁應用:建置映像、推送到映像庫,然後執行 zero deploy <image>:latest 取得 HTTPS 端點與健康檢查流量切換。
  • 拉取請求預覽連結用於審核:傳遞 --preview <identifier> 為每個 PR 建立預覽部署,並分享子網域 URL 給審核者。
  • 發行時安全回滾:若新容器健康檢查失敗或行為異常,執行 zero rollback <app> 復原,同時保持零停機(僅健康檢查通過後才切換流量)。
  • 從映像庫持續部署:設定 webhook 端點 URL 與密鑰,讓簽署 POST 觸發部署;標籤可對應一般部署或預覽部署。
  • 部署多容器服務:當應用使用 Docker Compose 描述時,使用 zero deploy --compose <file> --service <name> --name <stack> 部署 compose 檔案中所有服務,並為指定入口服務路由流量。

常見問題

  • 這裡的「零停機」是什麼意思?
    所述流程啟動新容器、執行 TCP 或 HTTP 健康檢查,僅檢查通過後才原子切換路由。若檢查失敗,流量維持在先前版本。

  • zero 需要設定檔或 YAML 嗎?
    頁面指出無需設定檔無網頁 UI,典型工作流程避免 YAML。

  • zero 如何啟用 HTTPS?
    自動使用 Let’s Encrypt 配置 HTTPS,並執行 HTTP 重新導向。

  • 可以部署多個容器,而非單一映像嗎?
    可以。頁面描述Docker Compose 支援,傳遞 compose 檔案、入口服務與部署名稱。

  • 預覽如何建立與管理?
    傳遞 --preview <name> 建立預覽部署,產生即時子網域 URL。頁面註明預覽會自動過期。

替代方案

  • 傳統 PaaS(平台即服務):這些服務管理 HTTPS、預覽與部署流程,但通常運行在平台而非自家伺服器;你可能需犧牲彈性與「擁有伺服器」控制權。
  • 自管反向代理 + 手動容器編排:你可用自家工具實現類似 HTTPS 與路由,但工作流程更手動(你需自行處理服務啟停、健康檢查、路由切換與憑證)。
  • 通用容器部署工具(基於 CLI 的編排器):部署容器至單一主機的工具可涵蓋類似步驟,但可能需更多設定檔、自訂路由,或手動健康檢查與回滾邏輯。
  • Kubernetes 用於多節點部署:若需多節點編排、RBAC 或網頁儀表板,Kubernetes 適用於不同情境,而非如 zero 這類單一伺服器部署引擎。
zero | UStack