このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Docker超入門:開発環境コンテナ:Ruby on Rails①

🐳 開発環境コンテナ:Ruby on Rails①

ここでは、Docker Composeを使ってRuby on Railsの開発環境コンテナを構築します。
Railsコンテナとデータベース用のMariaDBコンテナを連携させて動かすのが最終目的です。

この記事()では、Railsを動かすためのDockerfileGemfileGemfile.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開発などが短時間で構築できます。
世界的にもスタートアップ企業で広く採用されている人気フレームワークです。

URL:https://rubyonrails.org/

🧱 MariaDBとは?

Railsで扱うデータを保存するために、データベースとしてMariaDBを使用します。
MariaDBはMySQLの派生プロジェクトで、完全互換性と安定性の高さが特徴です。

特徴内容
ベースMySQLから派生したオープンソースRDBMS。
互換性MySQLと高い互換性があり、移行も容易。
性能高速かつ安定。クラスタ構成にも対応。
機能レプリケーション、セキュリティ機能が強化されている。

URL:https://mariadb.org/

🧩 Railsコンテナを作る準備

Railsを動かすには、単なるRubyイメージだけでは足りません。
RailsはNode.jsyarnという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/dockerDockerの作業フォルダに移動。
mkdir railsRails用の新しいプロジェクトフォルダを作成。
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'
行番号内容解説
1source 'https://rubygems.org'Gemを取得するリポジトリを指定します。
2gem '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"]

🧠 定義内容の詳細解説

行番号コマンド解説
1FROM ruby:3.2.4Ruby 3.2.4の公式イメージをベースにします。
2RUN apt-get update -qqパッケージリストを最新状態に更新します。
3RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && apt-get install -y nodejsNode.jsをインストールします(Railsの実行に必須)。
4RUN npm install --global yarnJavaScriptの依存関係管理ツールyarnをインストールします。
5WORKDIR /samplerails作業ディレクトリを /samplerails に設定。
6COPY Gemfile Gemfile.lock /samplerails/ホストのGemfileをコンテナにコピーします。
7RUN bundle installGemfileの内容に基づいて必要なGemをインストールします。
8CMD ["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 -fsSLNode.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プロジェクトの初期化を行っていきます。