RubyMine 2026.1 Help

チュートリアル: Kamal を使用して Rails アプリをデプロイする

Kamal(英語) は、コンテナー化された Rails アプリケーション用のデプロイツールです。 Capistrano のように SSH 経由でタスクを実行する代わりに、Kamal はアプリケーションの Docker イメージを構築し、レジストリにプッシュして、軽量コンテナー内でサーバー上で実行します。

RubyMine では、内蔵ターミナルから直接、または Run Anything を使って Kamal コマンドを実行できます。 これにより、IDE を移動することなく、デプロイのトリガー、環境の管理、ログの監視が容易になります。

このチュートリアルでは、Kamal を使用してサンプル Rails アプリケーションをリモートサーバーにデプロイする方法を説明します。 アプリケーションサーバーとして、Puma は Docker コンテナー内で実行され、Kamal Proxy が HTTP および HTTPS トラフィックを処理します。

前提条件

RubyMine から完全に Kamal を使用した Rails アプリケーションをデプロイするには、ローカル環境とリモートサーバーがこれらの要件を満たしていることを確認してください。

ローカルマシン

  • Mac と macOS

  • Rails プロジェクト用に RubyMine をインストールして構成します

  • Rails 8 アプリケーション。 古い Rails バージョンの場合は、Gemfile に Kamal を追加するか、 gem install kamal を使用してローカルにインストールしてください。

  • プロジェクトルートに有効な Dockerfile

  • ローカルにインストールされた Docker

  • 資格情報が安全に保存されたコンテナーレジストリ (Docker、Hub、GitHub コンテナーレジストリ、またはプライベートレジストリ) へのアクセス

  • ローカルに設定された SSH

Web サーバー

  • Linux ベースのホスト

  • Kamal deploy.yml で定義された同じユーザーによる SSH アクセス (または OpenSSH の設定)

  • Docker をインストールして実行 (カマルは kamal setup 中に新規ホストにインストールできる)

デプロイ

チュートリアルのこの部分では、Kamal を使用してアプリをデプロイするために必要な手順について説明します。

カマルを初期化する

  1. RubyMine でターミナル(表示 | ツール Windows | ターミナル )を開きます。 または、IDE の左下隅にあるツールバーの ターミナル アイコンをクリックします。

  2. 次のコマンドを実行してください:

    kamal init
  3. これにより、 config/deploy.yml ファイルが作成されます。 このファイルにはデプロイの多くの設定キーとオプションが含まれていますが、このチュートリアルでは、デプロイに必要な設定のみに焦点を当てます。

デプロイを構成する

kamal init によって生成された作成された config/deploy.yml ファイルを編集します。

以下はファイルの内容の例です。

# Name of your application. Used to uniquely configure containers. service: app_name # Name of the application being deployed. # Registry path for your Docker image. image: user/app_name # Docker image path in the container registry. servers: web: - # List of IPs or hostnames of the servers where the application will be deployed. ssh: user: user_name # SSH user for connecting to the deployment server(s). proxy: ssl: true # To disable SSL (useful for local testing), set to false. host: app.example.com # The hostname or domain where the app will be accessible. registry: username: # Registry username for pushing/pulling Docker images (e.g., Docker Hub credentials). password: # Registry token or password for authentication. env: clear: RAILS_ENV: # Specifies the environment for the Rails application (e.g., production, development). PORT: # The port the application should run on. SECRET_KEY_BASE: # Rails secret key base for encryption. builder: # The architecture used to build the Docker image (amd64 for compatibility with most servers).

    秘密を管理する

    本番環境では、Rails は暗号化と安全な操作のために有効な SECRET_KEY_BASE を必要とします。 正しく設定するには、以下の手順に従ってください。

    1. 強力な SECRET_KEY_BASE を生成するには、次のいずれかのコマンドを実行します。

      bin/rails secret # or ruby -rsecurerandom -e 'puts SecureRandom.hex(64)' # or, if using your built Docker image: docker run --rm <your-image> ./bin/rails secret
    2. 生成されたキーを環境設定に追加して、 config/deploy.yml ファイルを更新します。

      env: clear: RAILS_ENV: production PORT: "3000" SECRET_KEY_BASE: <%= ENV.fetch("SECRET_KEY_BASE") %>
    3. kamal deploy コマンドを実行する前に、キーを環境にエクスポートします。

      export SECRET_KEY_BASE="<your-generated-value>"

    デプロイされると、アプリケーションは提供された SECRET_KEY_BASE 値を使用して機密操作を保護します。

    初回サーバーセットアップを実行する

    kamal setup コマンドを実行して、サーバーをデプロイ用に準備します。

      アプリケーションのデプロイ

      デプロイを構成し、wev サーバーの準備が整ったことを確認したため、アプリケーションをデプロイできます。

      1. RubyMine ターミナルから次のコマンドを実行します。

        kamal deploy

        Kamal は次のことを行います。

        • Docker イメージをローカルでビルドする

        • レジストリにプッシュする

        • サーバーへの SSH 接続を確立する

        • 新しいイメージをプルする

        • 構成された環境でアプリケーションを起動する

      2. デプロイが完了したら、ブラウザーを開き、アプリケーション用に構成した URL にアクセスします。

      トラブルシューティング

      SSH がパスフレーズ/パスワードを何度も要求する

      1. パスフレーズのプロンプトを回避するには、SSH キーをエージェントにロードします。

        ssh-add ~/.ssh/id_ed25519
      2. 永続的なアクセスのために、SSH キーを macOS キーチェーンに追加します。

        ssh-add --apple-use-keychain -K ~/.ssh/id_ed25519
      3. ~/.ssh/config を設定して、SSH が正しいキーを使用することを確認します。

        Host your-server-ip User your-username IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes
      4. SSH 接続をテストして、すべてが機能していることを確認します。

        ssh your-username@your-server-ip

      ページが 404 を返す

      • リクエストが Rails に到達するかどうかを確認します。

        # in one shell kamal app logs -f # in another shell curl -I http://app.example.com/

        ログが空の場合は、DNS またはプロキシを修正してください。 Rails のログに 404 が表示される場合は、アプリにルートルートを追加してください。

      • プロキシがルーティングされ正常であることを確認します。

        kamal proxy ps kamal proxy logs -f curl -I -H "Host: app.example.com" http://127.0.0.1

        deploy.yml で 200 (たとえば、 /up ) を返すヘルスチェックパスを使用します。

      • アプリが正しいポート (デフォルトは 3000) をリッスンし、 0.0.0.0 をバインドしていることを確認します。

        curl -I http://127.0.0.1:3000/

      ロールバック

      現在のデプロイに問題がある場合は、アプリケーションを以前のバージョンにロールバックしてください。 これにより、安定した状態を迅速に回復できます。

      1. まず、以前のバージョンを識別するために利用可能なコンテナーを一覧表示します。

        kamal app containers -q
      2. 次に、希望するバージョンまたは最新の安定したバージョンを指定して、以前のイメージにロールバックします。

        kamal rollback
      3. ロールバック後、ログとアプリの状態を監視して、以前のバージョンが正しく実行されていることを確認します。

      関連事項

      2026 年 6 月 2 日