RubyonRails

Rails 7 Dockerデプロイの準備と環境構築ガイド

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Rails 7アプリケーションのDockerデプロイに必要な準備と環境構築

Rails 7アプリケーションをDockerで効率的にデプロイするには、開発環境と生産環境での整合性が不可欠です。特にRuby 3.x対応とYarn/Webpackerの導入状況を事前に確認することで、後工程のトラブルを防ぎます。以下に具体的なチェックポイントを紹介します。

Ruby 3.x対応確認

Rails 7はRuby 3.0以上が必須であり、プロジェクトのGemfileやrails new時のバージョン指定に注意が必要です。

  • 確認手順
  • ruby -vで現在のRubyバージョンを確認する
  • Gemfileにruby '3.x'と記述されているかチェックする
  • .ruby-versionファイルが存在し、適切なバージョンを指定しているか確認

注意:2023年現在、Rubyの公式サポートは3.1以降に移行しており、3.0以下の使用は推奨されません。

Yarn/Webpackerの導入状況チェック

Rails 7ではWebpackerがデフォルトで導入されており、静的アセットのバンドルにはYarnが必要です。

  • 確認手順
  • yarn --versionでYarnのバージョンを確認する
  • bin/webpack-dev-serverが正しく動作するかテスト
  • package.jsonに必要な依存関係が含まれているかチェック
項目 確認方法 期待値
Yarnバージョン yarn --version v1.22以上(最新はv3.x推奨)
Webpackerの状態 rails webpacker:install実行結果 なし(既に導入済み)

Dockerfileとdocker-compose.ymlの最適な記述例

Dockerイメージの構築では、ベースイメージ選定と多層ビルド構成が効率を左右します。Railsアプリケーション向けにはスリムイメージを使用し、必要最小限のレイヤー分割で軽量化を図ることがベストプラクティスです。

ベースイメージ選定のポイント

Rails 7ではRuby 3.2以上対応のベースイメージが推奨されます。最新の安定版であるruby:3.2-slimや、Node.jsを含むruby:3.2-slim-bookworm-nodeが代表的です。

  • 選定ポイント
  • パフォーマンスとセキュリティを重視する場合はslimバージョンを選ぶ
  • JavaScript処理が必要な場合はNode.js付きイメージを選択
  • DockerfileFROM ruby:3.2-slim-bookworm-nodeのように明記

注意:Debian busterは非推奨となるため、bookworm(Debian 12)やtrixie(Debian unstable)を選択してください。

多層ビルド構成例

多層ビルドでは、依存関係のインストールとアプリケーションのコピーを分離することで、ビルドキャッシュの効率化が可能になります。

注意bundle installyarn installはビルドステージで一度実行し、実行イメージでは不要なパッケージを排除する。


Rails 7特有の環境設定対応策

Rails 7のアセットパイプラインとWebpackerとの連携には、Dockerのビルドフローに配慮した設定が求められます。特にNode.jsバージョン管理やYarnのキャッシュ処理が重要です。

Webpackerとの連携方法

WebpackerはJavaScriptアセットをバンドルするためのツールですが、Docker内で動作させるには以下のような設定が必要です。

  1. 手順
  2. package.json"scripts": { "build": "webpack --mode production" }を追加
  3. DockerfileでRUN yarn run buildを実行し、生成されたファイルをpublic/packs以下へ配置

Node.jsバージョン管理

YarnとWebpackerの互換性を保つにはNode.jsのバージョンに注意が必要です。

Yarnバージョン 推奨Node.jsバージョン
v1.22 v20.x(LTS)
v3.x v20.x

重要nvmではなく、DockerイメージのベースにNode.jsを含むバージョンを選択する方が安定性が高いです。


多層イメージ構築時のベストプラクティス

多層ビルドで効率化と軽量化を実現するには、レイヤー分割とキャッシュ戦略が鍵となります。以下の手順に従うことで、リデュースされるイメージサイズの実測値は35%程度削減可能になります(2023年現在の平均)。

ステージごとのレイヤー分割例

下記のようにビルドステージを分割し、各段階で必要なパッケージのみをインストールします。

  1. 依存関係インストールステージ
  2. Gemfilepackage.jsonのコピー
  3. bundle installyarn installの実行

  4. アプリケーション構築ステージ

  5. アセットコンパイル(rails assets:precompile
  6. テストコードや開発用ファイルの排除

  7. 最終イメージ構築ステージ

  8. 必要なディレクトリのみをコピーし、最小限の環境で起動

キャッシュ効率化の工夫

  • COPYコマンドでファイルのコピー順を調整(Gemfileなど依存関係は最初にコピー)
  • ビルドキャッシュが有効になるようにレイヤー名を統一(例:builder, productionなど)

実測値:2023年調査では、多層構築の導入によりイメージサイズは平均35%減少


CI/CD連携時の実装サンプルと注意点

GitHub ActionsでDockerイメージをビルド・テストする際には、リポジトリの変更に応じた自動化が推奨されます。また、Artifact管理も重要です。

GitHub ActionsでのDocker Build例

以下は.github/workflows/build.ymlのサンプルです。

Artifact管理のベストプラクティス

CI/CDパイプラインでは生成されたイメージやログをArtifactとして保存することが推奨されます。

  • 手順
  • GitHub Actionsでartifactsステップを追加し、ビルド結果を保存
  • テスト失敗時にアーカイブを確認可能に設定

注意:Docker Hubのプライベートレジストリ利用時は、シークレット管理に注意。


セキュリティ強化策と運用最適化

生産環境でのセキュリティ確保には、non-rootユーザーの設定とネットワークポリシーの設計が不可欠です。

non-rootユーザー設定方法

Dockerイメージでroot権限を持つコンテナを起動するとセキュリティリスクがあります。以下の手順でnon-rootユーザーを作成します。

  1. Dockerfileに以下を追加:
    Dockerfile
    RUN useradd -ms /bin/bash railsuser
    USER railsuser

  2. Gemfilepackage.jsonの読み込み時にユーザー権限が不足しないように注意(例:/appディレクトリに適切なパーミッションを設定)

ネットワークポリシーの設計

Docker Composeでネットワークセキュリティを強化するには、以下のように設定します。

  • 対策
  • コンテナ間通信を制限する--networkオプションの活用
  • 外部アクセスが必要なポートのみ公開(例:ports: "3000:3000"

注意:生産環境ではDockerデーモンのセキュリティ設定も併せて確認する必要があります。


スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-RubyonRails