Repolode
sablierapp

sablierapp/sablier

按需启动容器等工作负载,空闲一段时间后自动停止,可配合反向代理使用。

Star
3,114
Fork
106
未关闭 Issue
68
最近提交
17小时前

这是什么?

Sablier 是一个可自托管的服务,收到请求时启动处于休眠状态的工作负载,并在无活动一段时间后将其关停。它支持 Docker、Docker Swarm、Podman、Kubernetes、Proxmox LXC 和 systemd 作为管理后端,同一套方案可以覆盖多种容器运行环境。

通常它会与 Traefik、Caddy、Nginx、Envoy、Apache APISIX 或 Istio 的反向代理插件配合使用。插件拦截请求后调用 Sablier API 唤醒目标服务,并在服务就绪前展示等待页面。会话既可以采用阻塞策略保持连接等待,也可以采用动态策略展示带主题的加载页面。

除了停止工作负载,Sablier 还提供 scale 模式,在空闲时限制 CPU、内存和块 I/O 而不是直接停止容器;反亲和(anti-affinity)功能则可让一组服务在另一组活跃时自动让出资源。此外还支持启停事件 webhook、Prometheus 指标和 OpenTelemetry 链路追踪。

核心功能

  • 01按需启动和停止 Docker、Swarm、Podman、Kubernetes、Proxmox LXC 和 systemd 工作负载。
  • 02通过代理插件与 Traefik、Caddy、Nginx、Envoy、Apache APISIX、Istio 集成。
  • 03工作负载预热期间展示可自定义主题的等待页面。
  • 04scale 模式在空闲时限制 CPU 和内存,而不是直接停止容器。
  • 05实例启停时发送 webhook 通知。
  • 06提供 Prometheus 指标和 OpenTelemetry 链路追踪。

适用场景

  • 在树莓派上运行服务,让不常用的应用平时保持停止,访问时再启动。
  • 让只偶尔使用的测试或预发布环境不占用资源。
  • 将空闲的 Kubernetes Deployment 缩容到零以降低云成本。
  • 让占用显存较多的服务在另一服务运行时自动让出资源。

快速上手

  1. 1

    使用 Docker 运行 Sablier 服务端(使用 README 中的 compose.yaml)

    docker run --name sablier -p 10000:10000 -v /var/run/docker.sock:/var/run/docker.sock sablierapp/sablier:1.10.5 start --provider.name=docker
  2. 2

    启动带有 Sablier 标签的演示容器

    docker run -d --health-cmd "/mimic healthcheck" -p 8080:80 --name mimic --label sablier.enable=true --label sablier.group=demo sablierapp/mimic:v0.3.3 -running -running-after=5s -healthy=true -healthy-after=5s
  3. 3

    通过 Sablier API 为 demo 组请求一个会话

    curl -v http://localhost:10000/api/strategies/blocking\?group\=demo\&session_duration\=20s

使用前须知

  • 需要 Docker 套接字、Kubernetes API、Podman 或 Proxmox 环境才能管理工作负载。
  • 要可靠地缩容至零,容器必须配置健康检查。
  • 采用 AGPL-3.0 许可证,这是一种具有网络使用义务的 Copyleft 许可证。

收录于专题

标签

常见问题

sablier 是什么?
按需启动容器等工作负载,空闲一段时间后自动停止,可配合反向代理使用。 Sablier 是一个可自托管的服务,收到请求时启动处于休眠状态的工作负载,并在无活动一段时间后将其关停。它支持 Docker、Docker Swarm、Podman、Kubernetes、Proxmox LXC 和 systemd 作为管理后端,同一套方案可以覆盖多种容器运行环境。
sablier 可以免费使用吗?用的什么许可证?
sablier 以 AGPL-3.0 许可证开源。用于商业产品前,请先确认许可证条款。
sablier 还在维护吗?
活跃维护中。sablier 最近一次提交是在 2026年11月6日。
sablier 适合用来做什么?
在树莓派上运行服务,让不常用的应用平时保持停止,访问时再启动。 让只偶尔使用的测试或预发布环境不占用资源。 将空闲的 Kubernetes Deployment 缩容到零以降低云成本。 让占用显存较多的服务在另一服务运行时自动让出资源。
sablier 怎么安装和运行?
使用 Docker 运行 Sablier 服务端(使用 README 中的 compose.yaml): docker run --name sablier -p 10000:10000 -v /var/run/docker.sock:/var/run/docker.sock sablierapp/sablier:1.10.5 start --provider.name=docker 启动带有 Sablier 标签的演示容器: docker run -d --health-cmd "/mimic healthcheck" -p 8080:80 --name mimic --label sablier.enable=true --label sablier.group=demo sablierapp/mimic:v0.3.3 -running -running-after=5s -healthy=true -healthy-after=5s 通过 Sablier API 为 demo 组请求一个会话: curl -v http://localhost:10000/api/strategies/blocking\?group\=demo\&session_duration\=20s
在哪里获取 sablier?
源代码和安装说明在 GitHub 上:https://github.com/sablierapp/sablier

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目