カテゴリ: Rails 更新日: 2026/04/11

DockerでRailsを動かす完全入門|マルチステージDockerfileとdocker-compose雛形を初心者向けに徹底解説

DockerでRails:マルチステージDockerfileとdocker-compose雛形
DockerでRails:マルチステージDockerfileとdocker-compose雛形

先生と生徒の会話形式で理解しよう

生徒

「Railsを本番環境で動かすときに、Dockerを使うと良いと聞いたんですが、そもそもDockerって何ですか?」

先生

「Dockerは、アプリを動かすための環境を“箱”にまとめる仕組みです。パソコンが初めてでも、同じ箱を使えば同じ動きをします。」

生徒

「箱にまとめると、Railsのデプロイや運用が楽になるんですか?」

先生

「そうです。さらにマルチステージDockerfileとdocker-composeを使うと、速くて安全なRails環境を作れます。」

1. Dockerとは何か?Rails初心者向けの超基本

1. Dockerとは何か?Rails初心者向けの超基本
1. Dockerとは何か?Rails初心者向けの超基本

Dockerとは、アプリケーションと実行環境をひとまとめにして動かす技術です。Railsアプリの場合、RubyやRails、ライブラリ、設定ファイルを全部まとめて一つの環境として扱えます。これは「引っ越し用の段ボール」に例えられます。中身を全部詰めておけば、どこへ持って行っても同じ状態で使える、というイメージです。Dockerを使うことで、開発環境と本番環境の差によるトラブルを防げます。

Railsの仕組みを根本から理解し、現場で通用する 「設計のセオリー」を身につけたいならこの一冊。 MVC、テスト、Docker対応など、実践的な内容が凝縮されています。

パーフェクト Ruby on RailsをAmazonで見る

※ Amazon広告リンク

2. RailsとDockerの関係|なぜデプロイで使われるのか

2. RailsとDockerの関係|なぜデプロイで使われるのか
2. RailsとDockerの関係|なぜデプロイで使われるのか

Railsのデプロイや運用では、環境差分が大きな問題になります。Dockerを使うと、開発時と本番時で同じDockerイメージを利用できます。これにより「手元では動くのにサーバーでは動かない」といった問題が減ります。DockerはRails、Heroku、CI/CD、Docker Composeなどと相性が良く、現代的なRails運用では定番の技術です。

3. マルチステージDockerfileとは?初心者向け解説

3. マルチステージDockerfileとは?初心者向け解説
3. マルチステージDockerfileとは?初心者向け解説

マルチステージDockerfileとは、Dockerfileの中で複数の段階を作る方法です。最初の段階でビルドや準備を行い、最後の段階には必要なものだけを残します。これは「料理の下ごしらえ」と「盛り付け」を分けるような考え方です。不要な道具を皿に乗せないことで、軽くて安全なRailsコンテナを作れます。

4. Rails用マルチステージDockerfileの基本例

4. Rails用マルチステージDockerfileの基本例
4. Rails用マルチステージDockerfileの基本例

FROM ruby:3.2 AS builder
WORKDIR /app
COPY Gemfile Gemfile.lock ./
RUN bundle install

FROM ruby:3.2
WORKDIR /app
COPY --from=builder /usr/local/bundle /usr/local/bundle
COPY . .
CMD ["rails", "server", "-b", "0.0.0.0"]

最初のステージでGemのインストールを行い、次のステージでは必要な結果だけをコピーしています。これがマルチステージDockerfileの基本構造です。

5. docker-composeとは?Rails初心者でも安心

5. docker-composeとは?Rails初心者でも安心
5. docker-composeとは?Rails初心者でも安心

docker-composeは、複数のDockerコンテナをまとめて管理するためのツールです。Railsでは、Webサーバーやデータベースを同時に起動する必要があります。docker-composeを使うと、コマンド一つでRailsとデータベースを一緒に起動できます。これは「電源タップ」に似ています。一つのスイッチで複数の機械を動かせます。

6. docker-compose.ymlの雛形(Rails用)

6. docker-compose.ymlの雛形(Rails用)
6. docker-compose.ymlの雛形(Rails用)

version: "3.9"
services:
  web:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
    command: rails server -b 0.0.0.0

この雛形を使えば、RailsアプリをDocker上で簡単に起動できます。初心者はまずこの形を覚えるだけで十分です。

7. DockerでRailsを起動する流れを整理

7. DockerでRailsを起動する流れを整理
7. DockerでRailsを起動する流れを整理

DockerfileでRailsの箱を作り、docker-composeで起動方法を決めます。実行するときは、決められた手順通りに箱を組み立てて起動します。この流れを理解すると、Railsのデプロイや運用が一気に楽になります。難しい操作はDockerが肩代わりしてくれます。

8. 初心者がつまずきやすいポイントと考え方

8. 初心者がつまずきやすいポイントと考え方
8. 初心者がつまずきやすいポイントと考え方

初心者がつまずきやすいのは「Docker用語が多い」ことです。イメージ、コンテナ、ビルドといった言葉は、すべて「箱を作る」「箱を動かす」という意味に置き換えると理解しやすくなります。Rails、Docker、docker-composeは役割分担がはっきりしているので、一つずつ覚えることが大切です。

まとめ

まとめ
まとめ

この記事では、DockerでRailsを動かすための基本から、マルチステージDockerfileやdocker-composeの雛形までを初心者向けに整理してきました。Dockerは難しそうに見えますが、本質は「Railsを動かす環境を箱にまとめて、どこでも同じように動かす仕組み」です。RubyやRails、Gem、設定ファイルを一つの環境として管理できるため、開発環境と本番環境の差分によるトラブルを大きく減らせます。

特にマルチステージDockerfileは、Railsアプリを軽量かつ安全に運用するために重要な考え方です。ビルド用の段階と実行用の段階を分けることで、不要なファイルやツールを含まないRailsコンテナを作成できます。これにより、Dockerイメージのサイズ削減やセキュリティ向上につながり、本番運用でも安心して利用できます。

また、docker-composeを使うことで、Railsアプリとデータベースなど複数のサービスをまとめて管理できます。Rails開発ではWebサーバーだけでなく、データベースやキャッシュなど複数の要素が必要になる場面が多いため、docker-composeの存在は欠かせません。設定ファイルに起動方法をまとめておくことで、コマンド一つでRails環境を立ち上げられるようになります。

Dockerfileとdocker-compose.ymlの役割を理解し、「箱を作る」「箱をどう動かすか決める」という視点で整理すると、DockerとRailsの関係がぐっと分かりやすくなります。Railsのデプロイ、Docker運用、CI/CD、クラウド環境への展開など、今後学ぶ内容の土台としても非常に重要な知識です。

最初は用語や設定が多く感じられるかもしれませんが、基本の雛形を使いながら少しずつ触れることで、DockerでRailsを動かす流れが自然と身についていきます。Dockerを理解することは、Railsエンジニアとしてのスキルの幅を大きく広げる第一歩と言えるでしょう。

Rails用マルチステージDockerfileの振り返りサンプル


FROM ruby:3.2 AS builder
WORKDIR /app
COPY Gemfile Gemfile.lock ./
RUN bundle install

FROM ruby:3.2
WORKDIR /app
COPY --from=builder /usr/local/bundle /usr/local/bundle
COPY . .
CMD ["rails", "server", "-b", "0.0.0.0"]

この構成では、最初のステージでGemのインストールを行い、実行に必要な成果物だけを次のステージへコピーしています。Rails初心者は、この形をそのまま使いながら「なぜ二段階に分けているのか」を意識すると理解が深まります。

docker-compose.yml雛形の振り返り


version: "3.9"
services:
  web:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
    command: rails server -b 0.0.0.0

docker-composeでは、Railsコンテナの起動方法やポート設定をまとめて管理できます。RailsをDockerで動かすときの基本形として覚えておくと、今後の学習がスムーズになります。

先生と生徒の振り返り会話

生徒

「Dockerって難しいと思っていましたが、Railsを動かす箱だと考えると分かりやすいですね」

先生

「その通りです。Dockerは仕組みよりも考え方が大事で、Railsの環境をまとめて扱うための道具なんですよ」

生徒

「マルチステージDockerfileは、最初はなぜ分けるのか分かりませんでした」

先生

「Railsを本番で動かすときは、必要なものだけを残すことが重要です。マルチステージは、そのための基本テクニックですね」

生徒

「docker-composeを使うと、Railsと他のサービスを一緒に管理できるのも便利ですね」

先生

「ええ。Rails開発やデプロイでは必須の考え方です。まずは雛形を使って、DockerでRailsを動かす流れに慣れていきましょう」

カテゴリの一覧へ
新着記事
New1
Ruby
RBSでRubyに型を付けよう!typeprofとsteepで静的型チェック入門
New2
Ruby
Rubyの文字列操作完全ガイド!初心者でもわかる作成・結合・分割・検索の基本
New3
Ruby
Rubyのデータ型とオブジェクトモデルを完全ガイド!初心者でもわかる「すべてがオブジェクト」である仕組み
New4
Ruby
Rubyのnil・true・falseを完全ガイド!初心者でもわかる真偽値と三値ロジック
人気記事
No.1
Java&Spring記事人気No1
Ruby
WindowsでRubyをインストールする方法!RubyInstallerとMSYS2を使った完全ガイド
No.2
Java&Spring記事人気No2
データベース
PostgreSQLのCTE(WITH句)完全解説!複雑なSQLを整理して読みやすくする書き方
No.3
Java&Spring記事人気No3
Rails
RailsのNginx+Puma構成を完全解説!upstream・keepalive・ヘルスチェックを初心者向けに理解しよう
No.4
Java&Spring記事人気No4
Ruby
PATHと環境変数の正しい設定!Windows・Mac・Linux別チェックリスト付き
No.5
Java&Spring記事人気No5
データベース
PostgreSQLのデータ型を完全解説!初心者でも失敗しないデータベース入門
No.6
Java&Spring記事人気No6
データベース
PostgreSQL配列型(Array)入門ガイド!初心者でもわかるデータベースの便利な使い方
No.7
Java&Spring記事人気No7
Ruby
Rubyの引数受け渡しを完全攻略!引数展開とパラメータフォワーディングの仕組み
No.8
Java&Spring記事人気No8
データベース
PostgreSQL入門!EXISTSとINの違いをSQL初心者向けに徹底解説