zero
한 번의 명령으로 Docker 이미지를 서버에 배포하세요. 자동 HTTPS, 헬스체크 기반 무중단 스위칭, 프리뷰 환경, 롤백까지.
zero(ShipZero)란 무엇인가?
zero는 자체 인프라에서 Docker 이미지를 실행하기 위한 단일 서버 배포 엔진입니다. 이미지를 배포하고, 자동으로 HTTPS를 프로비저닝하며, 헬스체크 후 트래픽을 라우팅하는 명령줄 워크플로를 제공합니다.
핵심 목적은 컨테이너 이미지에서 라이브 엔드포인트로 전환하는 데 필요한 일반적인 설정 작업을 제거하는 것입니다—설정 파일, 웹 UI, YAML 없이요. 동일한 명령 기반 접근으로 프리뷰 배포와 롤백도 지원합니다.
주요 기능
- 컨테이너 이미지에서 1-명령 배포: 레지스트리(예:
ghcr.io/...)의 모든 Docker 이미지를zero deploy로 배포하며 애플리케이션 포트를 자동 감지합니다. - HTTP 리다이렉트 포함 자동 HTTPS: Let’s Encrypt를 통해 HTTPS를 프로비저닝하고 배포 흐름의 일부로 HTTP → HTTPS 리다이렉트를 활성화합니다.
- 헬스체크 기반 무중단 트래픽 스위칭: 임시 포트에서 새 컨테이너를 시작하고 TCP 또는 HTTP 헬스체크를 실행한 후, 체크가 통과하면 트래픽을 스왑합니다.
- 프리뷰 환경:
--preview <name>(예:pr-21)을 사용해 자체 서브도메인을 가진 임시 배포를 생성합니다. 프리뷰 배포는 자동으로 만료됩니다. - 즉시 롤백:
zero rollback <app>으로 이전 이미지를 시작하고 헬스체크 후 트래픽을 되돌립니다. 헬스체크 실패 시 변경이 적용되지 않습니다. - 실시간 터미널 메트릭 및 로그: CPU, 메모리, 네트워크 통계를 터미널로 스트리밍하며,
zero logs --server로 서버 로그를 스트리밍할 수 있습니다. - 웹훅 자동 배포: HMAC-SHA256으로 서명된 웹훅 요청을 검증하고 레지스트리 이벤트로 배포를 트리거합니다. 일치하지 않는 태그는 프리뷰 배포를 생성합니다.
- 멀티 컨테이너 앱을 위한 Docker Compose 지원: 엔트리 서비스와 이름을 지정해 Docker Compose 파일을 배포하며, 풀링, 시작, 헬스체크, 라우팅을 처리합니다.
zero 사용 방법
- 서버 설정: Linux VPS와 도메인이 필요합니다.
- zero 설치:
- VPS에서:
curl -fsSL https://shipzero.sh/install.sh | sudo bash - 로컬 머신(CLI):
curl -fsSL https://shipzero.sh/cli/install.sh | bash
- VPS에서:
- SSH로 연결:
zero login <email-or-identifier>(예:zero login [email protected]). - 이미지 배포:
zero deploy <image-reference>(예:zero deploy ghcr.io/shipzero/demo:latest). - 출력 확인: 헬스체크 후 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>으로 되돌리며 다운타임을 0으로 유지(헬스체크 후에만 트래픽 스왑). - 레지스트리에서 지속적 배포: 웹훅 엔드포인트 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 (platform-as-a-service): 이러한 서비스는 HTTPS, 프리뷰, 배포 흐름을 관리하지만, 일반적으로 자체 서버가 아닌 플랫폼에서 실행됩니다. 유연성과 “서버 소유” 제어를 포기할 수 있습니다.
- 자체 관리 리버스 프록시 + 수동 컨테이너 오케스트레이션: 자체 도구로 유사한 HTTPS와 라우팅을 구현할 수 있지만, 워크플로우가 더 수동적입니다(서비스 시작/중지, 헬스체크, 라우팅 교체, 인증서를 직접 처리해야 함).
- 범용 컨테이너 배포 도구 (CLI 기반 오케스트레이터): 단일 호스트에 컨테이너를 배포하는 도구는 유사한 단계를 커버할 수 있지만, 더 많은 구성 파일, 커스텀 라우팅, 또는 수동 헬스체크 및 롤백 로직이 필요할 수 있습니다.
- 멀티노드 배포를 위한 Kubernetes: 멀티노드 오케스트레이션, RBAC, 웹 대시보드가 필요하다면 Kubernetes는 zero 같은 단일 서버 배포 엔진과 다른 적합성을 가집니다.
대안
Codex Plugins
Codex Plugins로 스킬, 앱 통합, MCP 서버를 재사용 워크플로로 묶어 Gmail·Google Drive·Slack 같은 도구 접근을 확장하세요.
Falconer
Falconer는 고속 팀을 위한 자체 업데이트 지식 플랫폼으로, 내부 문서와 코드 맥락을 한곳에서 작성·공유·찾아보세요.
OpenFlags
OpenFlags는 오픈소스 셀프호스팅 피처 플래그 시스템으로, 앱 SDK에서 로컬 평가와 REST 제어 플레인을 통해 안전한 점진적 배포를 지원합니다.
AakarDev AI
AakarDev AI는 원활한 벡터 데이터베이스 통합을 통해 AI 애플리케이션 개발을 간소화하는 강력한 플랫폼으로, 신속한 배포와 확장성을 가능하게 합니다.
AgentMail
AgentMail은 AI 에이전트를 위한 이메일 인박스 API로, REST로 메일 생성·발송·수신·검색해 양방향 대화를 구현합니다.
Arduino VENTUNO Q
Arduino VENTUNO Q는 로보틱스용 엣지 AI 컴퓨터로, AI 추론 하드웨어와 마이크로컨트롤러 제어를 한 보드에 통합합니다. Arduino App Lab로 개발 워크플로 제공