UStackUStack
zero icon

zero

一条命令将任意 Docker 镜像部署到你自己的服务器:自动 HTTPS、健康检查零停机切流、预览环境与一键回滚。

zero

zero(ShipZero)是什么?

zero 是一个单服务器部署引擎,用于在你自己的基础设施上运行 Docker 镜像。它提供命令行工作流来部署镜像、自动配置 HTTPS,并在健康检查后路由流量。

核心目的是消除从容器镜像到实时端点的常见设置任务——无需配置文件、Web UI 或 YAML。它还支持使用相同命令驱动方式进行预览部署和回滚。

主要特性

  • 1 命令从容器镜像部署:使用 zero deploy 从镜像仓库(例如 ghcr.io/...)部署任意 Docker 镜像,并自动检测应用端口。
  • 自动 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 化 Web 应用:构建镜像、推送到仓库,然后运行 zero deploy <image>:latest 即可获得带健康检查流量切换的 HTTPS 端点。
  • 拉取请求预览链接用于审查:为每个 PR 传递 --preview <identifier> 创建预览部署,并与审查者分享生成的子域名 URL。
  • 发布期间安全回滚:如果新容器健康检查失败或行为异常,运行 zero rollback <app> 回退,同时保持零停机(仅在健康检查通过后切换流量)。
  • 从镜像仓库持续部署:配置 webhook 端点 URL 和密钥,让签名 POST 触发部署;标签可映射为普通部署或预览部署。
  • 部署多容器服务:当应用由 Docker Compose 描述时,使用 zero deploy --compose <file> --service <name> --name <stack> 部署 compose 文件中定义的所有服务,并为指定入口服务路由流量。

常见问题

  • 这里的“零停机”是什么意思?
    所述流程启动新容器,运行 TCP 或 HTTP 健康检查,然后原子性地切换路由。如果健康检查失败,流量保持在上一版本。

  • zero 需要配置文件或 YAML 吗?
    页面明确表示无配置文件无 Web UI,典型工作流避免使用 YAML。

  • zero 如何启用 HTTPS?
    它使用 Let’s Encrypt 自动配置 HTTPS,并执行 HTTP 重定向。

  • 可以部署多个容器,而不只是单个镜像吗?
    可以。页面描述了 Docker Compose 支持,通过传递 compose 文件、入口服务和部署名称。

  • 预览环境如何创建和管理?
    通过传递 --preview <name> 创建预览部署,生成实时子域名 URL。页面注明预览会自动过期。

替代方案

  • 传统 PaaS(平台即服务):这些服务管理 HTTPS、预览环境和部署流程,但通常运行在平台上而非你自己的服务器;你可能需权衡灵活性和“拥有服务器”的控制权。
  • 自管反向代理 + 手动容器编排:你可以使用自己的工具实现类似 HTTPS 和路由,但工作流程更手动(你需自行处理服务启动/停止、健康检查、路由切换和证书)。
  • 通用容器部署工具(基于 CLI 的编排器):部署容器到单主机的主工具可覆盖类似步骤,但可能需要更多配置文件、自定义路由,或手动健康检查和回滚逻辑。
  • Kubernetes 用于多节点部署:如果需要多节点编排、RBAC 或 Web 仪表板,Kubernetes 更适合,而非像 zero 这样的单服务器部署引擎。
zero | UStack