kamal について
Kamalは、コンテナ化されたWebアプリをベアメタルのLinuxサーバーへデプロイする、37signalsのCLIです。SSH、Docker、Kamal Proxyを使い、停止を避けるデプロイやロールバック、ログ確認などを行えます。
主な機能
- 01SSH経由でコンテナアプリをデプロイ
- 02コンテナイメージのビルドとプッシュ
- 03Kamal Proxyによるデプロイのルーティング
- 04指定バージョンへのロールバック
- 05ログ確認とアプリコマンドの実行
- 06複数のデプロイ環境を設定
活用シーン
- 01LinuxサーバーへのWebアプリのデプロイ
- 02stagingなど別環境へのリリース
- 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
設定オプションの全一覧(レジストリのバリエーション、ビルダー、プロキシ、Accessories、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 を使用してください