用途:Kamal 是面向容器化应用的零停机部署工具,由 37signals 开发,通过 SSH、Docker 和 Kamal Proxy 把容器化 Web 应用部署到裸 Linux 服务器。
主要能力:核心组件包括 SSH/SSHKit(远程执行)、Docker(容器)、Kamal Proxy(零停机路由)和 Accessories(配套服务)。支持多环境部署、回滚、维护模式、日志跟踪、交互式控制台、健康检查与滚动发布策略。
使用方式:先安装 gem install kamal,在应用目录执行 kamal init 生成 config/deploy.yml 与 .kamal/secrets,编辑后运行 kamal setup 引导服务器、安装 Docker 并部署。常用命令有 kamal deploy(构建、推送、零停机部署)、kamal deploy -d staging(指定环境)、kamal rollback VERSION(回滚)、kamal app logs -f(跟踪日志)、kamal app exec -i --reuse "bin/rails console"(交互控制台)、kamal app maintenance / kamal app live(开启/关闭维护模式)、kamal config(查看解析后的配置)、kamal lock release(释放卡住的部署锁)。数据库迁移可通过 .kamal/hooks/pre-deploy 钩子执行。多环境可创建 config/deploy.staging.yml 后配合 -d staging 使用。
适用场景:适合将容器化 Web 应用部署到自有或裸 Linux 服务器,需要零停机发布、版本回滚和简单运维流程的团队。
限制:不做状态协调,从配置中移除服务器不会下线其容器;不支持动态资源调配,无法自动扩缩容或自动开通服务器;Kamal Proxy 仅在单台服务器内对容器做负载均衡,跨服务器需使用外部负载均衡器。完整配置、命令与工作流细节见官方参考资料。