このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Docker超入門:開発環境コンテナ:Ruby on Rails①

🐳 開発環境コンテナ:Ruby on Rails①
ここでは、Docker Composeを使ってRuby on Railsの開発環境コンテナを構築します。
Railsコンテナとデータベース用のMariaDBコンテナを連携させて動かすのが最終目的です。
この記事(①)では、Railsを動かすためのDockerfile・Gemfile・Gemfile.lockの準備を行います。
次回の②では、compose.yamlの定義とRailsプロジェクト初期化作成を行います。
「開発環境コンテナ:Ruby on Rails」は次の3部に分けて解説していきます。
💎 Ruby on Railsとは?

Ruby on Rails(通称:Rails)は、Rubyで作られたWebアプリケーションフレームワークです。
Web開発を効率化するための便利な仕組みがたくさん詰まっていて、
「同じことを何度も書かない(DRY: Don’t Repeat Yourself)」という思想で設計されています。
| 特徴 | 内容 |
|---|---|
| フレームワーク言語 | Rubyで書かれたWebアプリ用の開発基盤。 |
| アーキテクチャ | MVC(Model-View-Controller)構造を採用。 |
| 特徴 | 自動生成・マイグレーション・ルーティングなど開発を効率化。 |
| 開発スタイル | アジャイル開発・プロトタイピングに最適。 |
| 主な用途 | Webサービス・社内システム・ECサイトなど。 |
💡 ポイント
Railsを使うと、データベース接続や画面遷移、API開発などが短時間で構築できます。
世界的にもスタートアップ企業で広く採用されている人気フレームワークです。

🧱 MariaDBとは?

Railsで扱うデータを保存するために、データベースとしてMariaDBを使用します。
MariaDBはMySQLの派生プロジェクトで、完全互換性と安定性の高さが特徴です。
| 特徴 | 内容 |
|---|---|
| ベース | MySQLから派生したオープンソースRDBMS。 |
| 互換性 | MySQLと高い互換性があり、移行も容易。 |
| 性能 | 高速かつ安定。クラスタ構成にも対応。 |
| 機能 | レプリケーション、セキュリティ機能が強化されている。 |

🧩 Railsコンテナを作る準備

Railsを動かすには、単なるRubyイメージだけでは足りません。
RailsはNode.jsとyarnという2つのソフトウェアも必要です。
これらをRubyイメージに追加インストールするため、オリジナルDockerイメージを作成します。
🧹 作業前のクリーンアップ
まず、作業環境をクリーンに整えましょう。
古いコンテナや不要なボリュームがあると挙動が不安定になることがあります。
以下のコマンドを実行します👇
docker system prune -a --volumes| オプション | 説明 |
|---|---|
| -a | 使われていないすべてのイメージを削除します。 |
| --volumes | 使われていないボリュームも削除します。 |
実行結果
PS C:\Users\joeac> docker system prune -a --volumes
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all anonymous volumes not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y💡 補足
Docker Desktopを使えばGUI操作でも削除できます。
コマンド操作に不慣れな方にはそちらの方が分かりやすいです。
📁 作業ディレクトリの作成
Railsコンテナ構築に必要なファイルは次の4つです。
| ファイル名 | 役割 |
|---|---|
| Dockerfile | カスタムRailsイメージの構築定義。 |
| compose.yaml | 複数コンテナ(Rails+MariaDB)を連携させる設定。 |
| Gemfile | 必要なGem(Rubyライブラリ)の定義。 |
| Gemfile.lock | 実際にインストールされたGemのバージョンを固定。 |
ディレクトリを作成して移動
cd desktop/docker
mkdir rails
cd rails| コマンド | 説明 |
|---|---|
| cd desktop/docker | Dockerの作業フォルダに移動。 |
| mkdir rails | Rails用の新しいプロジェクトフォルダを作成。 |
| cd rails | 作成したフォルダに移動。 |
実行結果
PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker> mkdir rails
Directory: C:\Users\joeac\Desktop\docker
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2025/10/19 14:44 rails
PS C:\Users\joeac\Desktop\docker> cd rails
PS C:\Users\joeac\Desktop\docker\rails>💎 GemfileとGemfile.lockの準備
Railsプロジェクトでは、GemfileとGemfile.lockで依存関係を管理します。
Gemfileとは?
Rubyで利用するライブラリ(Gem)の一覧を定義するファイルです。
Railsやデータベース関連Gemなど、必要なものをここに記述します。
code Gemfile以下の内容を入力して保存します👇
source 'https://rubygems.org'
gem 'rails', '7.1.3'| 行番号 | 内容 | 解説 |
|---|---|---|
| 1 | source 'https://rubygems.org' | Gemを取得するリポジトリを指定します。 |
| 2 | gem 'rails', '7.1.3' | Rails 7.1.3バージョンを利用することを指定します。 |
Gemfile.lockとは?
Gemfile.lockは、実際にインストールされたGemのバージョンを固定するファイルです。
開発者全員が同じ環境で開発できるようにするために使います。
このファイルは手動で編集せず、空の状態で作成しておくだけでOKです。
code Gemfile.lock内容は空で保存します。
⚙️ Dockerfileの作成
Railsを動かすための環境(Node.js、yarnなど)を追加したDockerfileを作成します。
code Dockerfile以下の内容を入力して保存します👇
FROM ruby:3.2.4
RUN apt-get update -qq
RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && apt-get install -y nodejs
RUN npm install --global yarn
WORKDIR /samplerails
COPY Gemfile Gemfile.lock /samplerails/
RUN bundle install
CMD ["rails", "server", "-b", "0.0.0.0"]🧠 定義内容の詳細解説
| 行番号 | コマンド | 解説 |
|---|---|---|
| 1 | FROM ruby:3.2.4 | Ruby 3.2.4の公式イメージをベースにします。 |
| 2 | RUN apt-get update -qq | パッケージリストを最新状態に更新します。 |
| 3 | RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && apt-get install -y nodejs | Node.jsをインストールします(Railsの実行に必須)。 |
| 4 | RUN npm install --global yarn | JavaScriptの依存関係管理ツールyarnをインストールします。 |
| 5 | WORKDIR /samplerails | 作業ディレクトリを /samplerails に設定。 |
| 6 | COPY Gemfile Gemfile.lock /samplerails/ | ホストのGemfileをコンテナにコピーします。 |
| 7 | RUN bundle install | Gemfileの内容に基づいて必要なGemをインストールします。 |
| 8 | CMD ["rails", "server", "-b", "0.0.0.0"] | コンテナ起動時にRailsサーバーを立ち上げます。 |
🧩 Node.jsとは?
Node.jsは、JavaScriptでサーバーサイド処理を行うための実行環境です。
Rails内ではJavaScriptやCSSのコンパイルで使われます。
| 項目 | 内容 |
|---|---|
| ランタイム | JavaScriptをサーバーで動かすための環境。 |
| 特徴 | 非同期・イベント駆動で高速処理が可能。 |
| ベース | Google ChromeのV8エンジン。 |
| 主な用途 | Webサーバ、API開発、リアルタイム通信など。 |
📦 yarnとは?
yarnは、Node.jsのパッケージマネージャーです。
RailsではJavaScriptライブラリの管理に使われます。
| 特徴 | 内容 |
|---|---|
| 開発元 | Facebookが開発。 |
| 役割 | npmと同様に依存パッケージを管理。 |
| 強み | 高速なキャッシュ機能とバージョン固定(lockファイル)で安定動作。 |
🧠 3行目のコマンドを詳しく解説
Dockerfileの3行目には少し長いコマンドが出てきます👇
RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && apt-get install -y nodejsこれを分解して説明します。
| 部分 | 意味 |
|---|---|
| curl -fsSL | Node.jsのセットアップスクリプトをダウンロード。 |
| bash - | ダウンロードしたスクリプトをbashで実行。 |
| && apt-get install -y nodejs | 成功したらnodejsをインストール。 |
💡 オプションの意味
| オプション | 内容 |
|---|---|
| -f | エラーメッセージを非表示にして処理を続行。 |
| -s | 進捗やエラーを表示しない。 |
| -S | エラー時だけメッセージを表示。 |
| -L | リダイレクトを許可してURL先を追う。 |
✅ まとめ
| ステップ | 内容 |
|---|---|
| ① | 不要なDockerオブジェクトを削除(docker system prune -a --volumes) |
| ② | railsディレクトリを作成し、Gemfile・Gemfile.lockを準備 |
| ③ | Dockerfileを作成して、Ruby+Node.js+yarn環境を構築 |
| ④ | bundle installでGem依存関係を解決 |
| ⑤ | CMDでRailsサーバを起動する設定完了! |
これで、Railsコンテナの基本となるDockerfile構築が完了です🎉
次回「開発環境コンテナ:Ruby on Rails②」では、
compose.yamlの作成とRailsプロジェクトの初期化を行っていきます。
