用途:将容器化应用(尤其 Rails)部署到任意 Linux 服务器,基于 Docker、SSH 与 Kamal Proxy,提供零停机部署、滚动重启、自动 SSL/TLS 证书和附属服务管理。
主要能力:通过 config/deploy.yml 配置服务、服务器、角色(如 web、job)与附属服务(PostgreSQL、Redis、Sidekiq);Kamal Proxy 负责反向代理与 SSL 终止;支持单机与多机架构、部署钩子、CI/CD、备份与日志监控。
使用方式:安装 gem install kamal;初始化 kamal init(生成 config/deploy.yml、.kamal/secrets、.kamal/hooks/);首次部署 kamal setup;后续 kamal deploy,可用 --skip-push、--version=VERSION。附属服务用 kamal accessory boot/reboot/remove/logs。调试用 kamal app logs、kamal app exec -i 'bin/rails console'、kamal rollback、kamal lock 等。
限制与注意:Kamal 2 自带 kamal 私有网络,勿再配置自定义网络;deploy.yml 不支持 ERB;Docker 端口暴露会绕过 UFW;SSL 需在 production.rb 设 config.assume_ssl = true;域名勿作 VM 主机名;asset bridging 需显式配置 asset_path;迁移附属服务前须先移除。其余细节暂未提供。