mcpField
K
kamal

kamal

github.com/el-feo云与 DevOps1235 次安装14 周前更新
代码仓库

关于 kamal

Kamal 是 37signals 提供的部署 CLI,用于将容器化 Web 应用部署到裸机 Linux 服务器。它通过 SSH、Docker 和 Kamal Proxy 执行旨在避免停机的部署,并支持回滚和查看日志等操作。

主要功能

  1. 01通过 SSH 部署容器化应用
  2. 02构建并推送容器镜像
  3. 03使用 Kamal Proxy 路由部署
  4. 04回滚到指定版本
  5. 05查看日志并运行应用命令
  6. 06配置多个部署环境

适用场景

  1. 01将 Web 应用部署到 Linux 服务器
  2. 02将应用发布到 staging 等环境
  3. 03回滚有问题的版本
  4. 04排查部署问题时检查日志

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/el-feo/ai-context --skill kamal

安装后在 Claude Code 中输入/kamal确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
commands.md
configuration.md
workflows.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
调试失败的部署
  1. kamal app logs -n 500 — 检查应用日志
  2. kamal server exec "docker ps -a" — 检查容器状态
  3. kamal app exec "curl localhost:3000/up" — 测试健康检查端点
  4. kamal config — 验证配置
  5. kamal lock release — 清除卡住的锁
多个环境

创建 config/deploy.staging.yml,然后:

kamal setup -d staging && kamal deploy -d staging

详细工作流(CI/CD、扩缩容、备份、安全、金丝雀部署、监控),请参阅 references/workflows.md。

限制

  • 不协调状态 — 从配置中移除服务器不会停用容器
  • 不支持动态配置 — 无法自动扩缩容或配置服务器
  • 负载均衡仅限单台服务器 — Kamal Proxy 在每台服务器内对容器进行负载均衡;跨服务器请使用外部 LB

评论

支持 Markdown