UStackUStack
zero icon

zero

Implante qualquer imagem Docker no seu servidor com um comando: HTTPS automático, alternância sem downtime via health check, previews e rollback.

zero

O que é zero (ShipZero)?

zero é um motor de deployment para servidor único que executa imagens Docker na sua própria infraestrutura. Ele fornece um fluxo de trabalho via linha de comando para implantar uma imagem, provisionar HTTPS automaticamente e rotear o tráfego após um health check.

O propósito principal é eliminar tarefas comuns de configuração para ir de uma imagem de container a um endpoint ao vivo — sem precisar de arquivos de config, interface web ou YAML. Ele também suporta deployments de preview e rollback com a mesma abordagem command-driven.

Principais Recursos

  • Deploy com 1 comando a partir de uma imagem de container: Implanta qualquer imagem Docker de um registry (ex.: ghcr.io/...) usando zero deploy e detecta automaticamente a porta da aplicação.
  • HTTPS automático com redirecionamentos HTTP: Provisiona HTTPS via Let’s Encrypt e ativa redirecionamentos HTTP → HTTPS como parte do fluxo de deployment.
  • Alternância de tráfego sem downtime via health checks: Inicia um novo container em uma porta efêmera, executa um health check TCP ou HTTP e só alterna o tráfego se o check passar.
  • Ambientes de preview: Use --preview <name> (ex.: pr-21) para criar um deployment temporário com subdomínio próprio; previews expiram automaticamente.
  • Rollback instantâneo: zero rollback <app> inicia a imagem anterior, faz health check e alterna o tráfego de volta; se o check falhar, as mudanças não são aplicadas.
  • Métricas e logs em terminal ao vivo: Transmite stats de CPU, memória e rede para o terminal, e pode transmitir logs do servidor com zero logs --server.
  • Auto-deploy via webhook: Verifica requests de webhook assinados com HMAC-SHA256 e pode disparar deploys de eventos de registry; tags não correspondentes criam previews.
  • Suporte a Docker Compose para apps multi-container: Implanta um arquivo Docker Compose especificando o serviço de entrada e nome, gerenciando pull, start, health check e roteamento.

Como Usar zero

  1. Configure um servidor: Você precisa de um VPS Linux e um domínio.
  2. Instale zero:
    • No VPS: curl -fsSL https://shipzero.sh/install.sh | sudo bash
    • Na sua máquina (CLI): curl -fsSL https://shipzero.sh/cli/install.sh | bash
  3. Conecte via SSH: zero login <email-ou-identificador> (como mostrado: zero login [email protected]).
  4. Implante uma imagem: zero deploy <referência-da-imagem> (ex.: zero deploy ghcr.io/shipzero/demo:latest).
  5. Verifique a saída: Após os health checks, zero exibe a URL ao vivo (baseada no domínio e porta da app detectada).

Para previews, implante com --preview (ex.: zero deploy demo --preview pr-21). Para rollbacks, execute zero rollback <app>.

Casos de Uso

  • Implantando uma web app Dockerizada única: Construa uma imagem, envie para um registry, então execute zero deploy <imagem>:latest para obter um endpoint HTTPS com alternância de tráfego via health check.
  • Links de preview para pull requests em reviews: Crie um deployment de preview por PR passando --preview <identificador> e compartilhe a URL do subdomínio com os revisores.
  • Rollback seguro durante releases: Se um novo container falhar no health check ou se comportar incorretamente, execute zero rollback <app> para reverter mantendo zero downtime (troca de tráfego só ocorre após health checks).
  • Deploy contínuo de registries: Configure uma URL de endpoint webhook e secret, então deixe um POST assinado disparar deployments; tags podem mapear para deployments normais vs previews.
  • Implantando serviços multi-container: Quando um app é descrito por Docker Compose, use zero deploy --compose <arquivo> --service <nome> --name <stack> para implantar todos os serviços do compose e rotear tráfego para o serviço de entrada especificado.

FAQ

  • O que significa “zero-downtime” aqui?
    O fluxo descrito inicia um novo container, executa um health check TCP ou HTTP e só então alterna as rotas atomicamente. Se os health checks falharem, o tráfego permanece na versão anterior.

  • zero exige arquivos de config ou YAML?
    A página afirma que não há arquivos de config e não há interface web e que o fluxo típico evita YAML.

  • Como zero habilita HTTPS?
    Ele provisiona HTTPS automaticamente usando Let’s Encrypt, e também faz redirecionamentos HTTP.

  • Posso implantar múltiplos containers, não só uma imagem única?
    Sim. A página descreve suporte a Docker Compose, onde você passa o arquivo compose, um serviço de entrada e um nome de deployment.

  • Como previews são criados e gerenciados?
    Deployments de preview são criados passando --preview <name>, resultando em uma URL de subdomínio ao vivo. A página nota que previews expiram automaticamente.

Alternativas

  • PaaS tradicional (platform-as-a-service): Esses serviços gerenciam HTTPS, previews e fluxos de deployment, mas geralmente rodam em uma plataforma em vez do seu próprio servidor; você pode abrir mão de flexibilidade e controle de “possuir o servidor”.
  • Proxy reverso auto-gerenciado + orquestração manual de contêineres: Você pode alcançar HTTPS e roteamento semelhantes com suas próprias ferramentas, mas o workflow é mais manual (você gerencia start/stop de serviços, health checks, trocas de roteamento e certificados sozinho).
  • Ferramentas genéricas de deployment de contêineres (orquestradores baseados em CLI): Ferramentas que implantam contêineres em um único host cobrem passos semelhantes, mas podem exigir mais arquivos de configuração, roteamento customizado ou lógica manual de health check e rollback.
  • Kubernetes para deployments multi-nó: Se você precisa de orquestração multi-nó, RBAC ou dashboard web, o Kubernetes é uma opção diferente de um engine de deployment de servidor único como o zero.
zero | UStack