关于 kamal
Kamal 是 37signals 提供的部署 CLI,用于将容器化 Web 应用部署到裸机 Linux 服务器。它通过 SSH、Docker 和 Kamal Proxy 执行旨在避免停机的部署,并支持回滚和查看日志等操作。
主要功能
- 01通过 SSH 部署容器化应用
- 02构建并推送容器镜像
- 03使用 Kamal Proxy 路由部署
- 04回滚到指定版本
- 05查看日志并运行应用命令
- 06配置多个部署环境
适用场景
- 01将 Web 应用部署到 Linux 服务器
- 02将应用发布到 staging 等环境
- 03回滚有问题的版本
- 04排查部署问题时检查日志
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ el-feo/ ai-context --skill kamal安装后在 Claude Code 中输入/kamal确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/commands.mdconfiguration.mdworkflows.md详细介绍
Kamal 部署
Kamal 是一款为容器化应用打造的零停机部署工具,由 37signals 开发。它结合 SSH、Docker 和 Kamal Proxy,可将任意容器化 Web 应用部署到裸机 Linux 服务器。
核心组件:SSH/SSHKit(远程执行)、Docker(容器)、Kamal Proxy(零停机路由)、Accessories(辅助服务)。
快速开始
gem install kamal
cd your-app && kamal init # Generate config/deploy.yml and .kamal/secrets
# Edit config/deploy.yml and .kamal/secrets
kamal setup # Bootstrap servers, install Docker, deploy
最简 deploy.yml
service: myapp
image: username/myapp
servers:
web:
- 192.168.1.10
registry:
server: ghcr.io
username: myuser
password:
- KAMAL_REGISTRY_PASSWORD
env:
secret:
- RAILS_MASTER_KEY
clear:
RAILS_ENV: production
proxy:
ssl: true
host: example.com
完整配置选项(注册表变体、构建器、代理、辅助服务、SSH、卷、别名、健康检查、发布策略),请参阅 references/configuration.md。
核心命令
kamal deploy # Build, push, deploy with zero downtime
kamal deploy -d staging # Deploy to specific environment
kamal rollback VERSION # Rollback to previous version
kamal app logs -f # Follow application logs
kamal app exec -i --reuse "bin/rails console" # Interactive console
kamal app maintenance # Enable maintenance mode
kamal app live # Disable maintenance mode
kamal config # Show parsed configuration
kamal lock release # Release stuck deployment lock
包含所有选项的完整命令参考,请参阅 references/commands.md。
常见工作流
部署并执行数据库迁移
创建 .kamal/hooks/pre-deploy:
#!/bin/bash
kamal app exec -p -q "bin/rails db:migrate"
然后运行 chmod +x .kamal/hooks/pre-deploy && kamal deploy。
回滚
kamal app containers # List available versions
kamal rollback abc123def # Rollback to specific version
调试失败的部署
kamal app logs -n 500— 检查应用日志kamal server exec "docker ps -a"— 检查容器状态kamal app exec "curl localhost:3000/up"— 测试健康检查端点kamal config— 验证配置kamal lock release— 清除卡住的锁
多个环境
创建 config/deploy.staging.yml,然后:
kamal setup -d staging && kamal deploy -d staging
详细工作流(CI/CD、扩缩容、备份、安全、金丝雀部署、监控),请参阅 references/workflows.md。
限制
- 不协调状态 — 从配置中移除服务器不会停用容器
- 不支持动态配置 — 无法自动扩缩容或配置服务器
- 负载均衡仅限单台服务器 — Kamal Proxy 在每台服务器内对容器进行负载均衡;跨服务器请使用外部 LB
评论
支持 Markdown