カテゴリ: Rails 更新日: 2025/12/19

DockerでRails開発環境を一撃構築!初心者でも簡単にできるdocker-composeの使い方

DockerでRails開発:docker-composeでDB/Redis付き環境を一撃構築
DockerでRails開発:docker-composeでDB/Redis付き環境を一撃構築

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

生徒

「Railsの開発環境を作ろうとしたら、データベースとかRedisとか必要って言われて…パソコンにいろいろ入れるのが大変で困ってます。」

先生

「そんなときはDockerが便利ですよ。Dockerを使えば、パソコンに直接インストールしなくても、RailsやDBなどをまとめて使えるんです。」

生徒

「Dockerってなんだか難しそう…初めてでも使えるんですか?」

先生

「もちろんです!docker-composeを使えば、RailsもデータベースもRedisも一発で準備できますよ。順番に見ていきましょう!」

1. Dockerとdocker-composeとは?

1. Dockerとdocker-composeとは?
1. Dockerとdocker-composeとは?

Docker(ドッカー)とは、アプリを動かすための「小さな仮想パソコン」のようなものです。本当のパソコンに直接ソフトを入れるのではなく、Dockerの中に入れておくイメージです。

そしてdocker-compose(ドッカーコンポーズ)は、複数のDocker環境を一気に起動したり設定できる便利なツールです。

Railsアプリを動かすには、通常データベース(PostgreSQLやMySQL)やRedisなども必要ですが、docker-composeを使えばそれらをまとめて用意できます。

2. 必要なファイルを用意しよう(Dockerfileとdocker-compose.yml)

2. 必要なファイルを用意しよう(Dockerfileとdocker-compose.yml)
2. 必要なファイルを用意しよう(Dockerfileとdocker-compose.yml)

まずはDockerにRailsの環境を作るための「設計図」を書きます。これがDockerfileです。


FROM ruby:3.2
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client redis
WORKDIR /myapp
COPY Gemfile* ./
RUN bundle install
COPY . .
CMD ["rails", "server", "-b", "0.0.0.0"]

次に、docker-composeで複数のサービス(Rails、DB、Redis)をまとめて起動するためのファイルを作ります。

これがdocker-compose.ymlです。


version: '3'
services:
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - ".:/myapp"
    ports:
      - "3000:3000"
    depends_on:
      - db
      - redis
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: password
  redis:
    image: redis

このように書くことで、Rails・PostgreSQL・Redisが同時に立ち上がる環境が整います。

3. docker-composeでRails開発環境を起動しよう

3. docker-composeでRails開発環境を起動しよう
3. docker-composeでRails開発環境を起動しよう

ファイルを作ったら、以下のコマンドを実行します。


docker-compose up --build

このコマンドを実行することで、初めての人でも一発で以下の環境が起動します。

  • Railsアプリ
  • PostgreSQL(データベース)
  • Redis(キャッシュやキュー管理)

もしRailsアプリがまだ生成されていない場合は、別途以下のコマンドを使って作成できます。


docker-compose run web rails new . --force --database=postgresql --skip-bundle

4. データベース設定のポイント

4. データベース設定のポイント
4. データベース設定のポイント

Railsアプリを作成したあとは、データベースの設定ファイルを少し修正する必要があります。

config/database.ymlファイルを開き、以下のように設定します。


default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  username: postgres
  password: password

ここで大事なのは、host: dbと書くことです。これはdocker-composeの中で指定したサービス名(db)と一致させる必要があります。

5. Redisって何?Railsで何に使うの?

5. Redisって何?Railsで何に使うの?
5. Redisって何?Railsで何に使うの?

Redis(レディス)は、情報を一時的に保存しておくための仕組みです。とても速くて軽いため、ログイン情報や通知、非同期処理などに使われます。

Railsでは、背景で何かを処理したり、キャッシュを使うようなときに活躍します。

たとえば、Sidekiq(サイドキック)というGemを使うときは、Redisが必須になります。

docker-composeにRedisを加えておけば、あとで何か必要になったときも安心です。

6. docker-composeのメリット

6. docker-composeのメリット
6. docker-composeのメリット

docker-composeを使うと、次のようなメリットがあります。

  • Rails・DB・Redisなどを一発で起動できる
  • 設定ファイルを使って環境を再現しやすい
  • 自分のパソコンを汚さずに開発できる
  • チームで同じ環境を使えるようになる

初心者でも、docker-compose.ymlを用意するだけでRails環境が簡単に構築できるのは、とても大きな魅力です。

まとめ

まとめ
まとめ

Dockerを使ったRails開発環境の構築は、はじめて学ぶ人にとって複雑に感じられる部分もありますが、docker-composeを活用することで、Rails、データベース、Redisといった複数のサービスを一括で起動できる便利さを実感できるようになります。とくにRails開発では、環境構築が整っていないとアプリケーションの動作確認やデータ操作がスムーズに進まないため、安定した環境を素早く作り出せるDockerの存在は非常に心強いものです。RailsとPostgreSQLやRedisを連携させながら確実に動かすためには、Dockerfileに必要なライブラリを追加し、docker-compose.ymlで各サービスの設定をまとめて記述するという仕組みがとても効率的です。こうした流れを身につけると、開発環境の再現性が高まり、プロジェクトの規模が大きくなっても柔軟に対応できる力が育ちます。

また、Dockerでは「コンテナ」という単位でRailsやDBを実行するため、自分のパソコンの環境に影響を与えず、必要なときに必要な構成でサービスを起動できるのが大きな利点です。docker-compose.ymlでサービス名を指定し、Rails側のdatabase.ymlと連携させることで、アプリケーション全体がひとつのまとまりとして動作します。とくにhost: dbのようにサービス名を一致させる部分は、Docker特有のポイントであり、理解しておくと環境構築のトラブルを減らせます。Redisもdocker-composeに組み込んでおくことで、後からSidekiqなどの非同期処理を導入するときにスムーズな連携ができ、拡張性の高い開発環境が準備できます。

さらに、Dockerfileを使ってRails環境をひとつの設計図として保存できるため、新しいメンバーが加わったときや別のパソコンで作業したい時でも、同じ設定を再現できるのが大きな強みです。開発チーム全体で同じ環境を共有できることで、Railsアプリケーションの動作差異が生まれにくくなり、開発効率の向上にもつながります。以下に、今回の学習内容を踏まえたサンプルコードを改めて掲載します。Rails開発環境の全体像を確認しながら、自分のプロジェクトにも応用できるように振り返ってみてください。

サンプルDockerfileとdocker-compose.yml


FROM ruby:3.2
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client redis
WORKDIR /myapp
COPY Gemfile* ./
RUN bundle install
COPY . .
CMD ["rails", "server", "-b", "0.0.0.0"]

version: '3'
services:
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - ".:/myapp"
    ports:
      - "3000:3000"
    depends_on:
      - db
      - redis
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: password
  redis:
    image: redis

Railsアプリにデータベースを接続するためのdatabase.ymlもDocker環境では非常に重要で、設定を誤るとアプリが起動しなかったり接続できなかったりするため、以下のようにDockerのサービス名と揃えて書くことが必要です。


default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  username: postgres
  password: password

このように、Rails開発環境をDockerとdocker-composeで整える方法を理解すると、環境構築の不安が減り、アプリ本体の開発に集中できるようになります。開発を続けていくなかで、さまざまなGemやサービスを追加したい場面が出てきますが、そのたびにDockerfileやdocker-compose.ymlを更新するだけで柔軟に対応できるため、学べば学ぶほど便利さを実感できるでしょう。今後のRails開発に必要不可欠な基礎として、今回の内容をしっかり身につけておくことが大切です。

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

生徒「DockerでRailsを動かす仕組みがだいぶわかってきました!docker-composeで全部まとめて起動できるのが本当に便利ですね。」

先生「そうでしょう。特にRailsはデータベースやRedisと一緒に動くことが多いので、その環境を一括で準備できるのはとても大きなメリットなんです。」

生徒「database.ymlのhostをサービス名にする理由もやっと理解できました。Docker同士が名前で通信してるんですね!」

先生「そのとおりです。Dockerのネットワークはサービス名で結びつく仕組みなので、ここを押さえておけば他のプロジェクトでも同じように応用できますよ。」

生徒「Redisを追加しておくと、あとでSidekiqも使いやすくなるのも便利ですね。必要になる前から準備しておけるなんて助かります!」

先生「良い視点ですね。開発環境が整っていると、次にやりたいことが増えてもスムーズに進められます。Dockerはそのための強力な支えになるんですよ。」

生徒「これからRailsアプリを作るときは、まずDocker環境を整えるところから始めてみます!」

先生「その調子です。環境構築を理解しておくと、開発の幅がぐっと広がりますからね。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Dockerとは何ですか?Rails開発でどんな役割がありますか?

Dockerはアプリケーションを動かすための仮想環境で、Railsやデータベースなどの開発環境を自分のパソコンに直接インストールせずに使うことができます。Rails開発ではDockerを使うことで簡単に複数のソフトを管理できます。
関連記事:
カテゴリの一覧へ
新着記事
New1
データベース
SQLの処理が遅くなる原因とは?初心者向けにデータベースパフォーマンス最適化を完全解説
New2
Ruby
RubyのネストHash操作を徹底解説!digとtransformメソッドで複雑なデータも楽々
New3
Rails
Railsインデックス設計の極意!爆速サイトを作るためのスキーマ設計ガイド
New4
データベース
SQLのCOMMITとROLLBACKとは?トランザクション操作を初心者向けに完全解説
人気記事
No.1
Java&Spring記事人気No1
Ruby
PATHと環境変数の正しい設定!Windows・Mac・Linux別チェックリスト付き
No.2
Java&Spring記事人気No2
Rails
Railsで日本語と時刻の設定をしよう!初心者でも安心のlocale/zone初期設定チートシート
No.3
Java&Spring記事人気No3
Ruby
Rubyのハッシュを徹底比較!シンボルキーと文字列キーの違いと使い分け
No.4
Java&Spring記事人気No4
Rails
Railsマイグレーションの型選びを完全ガイド!初心者が迷わないカラム設計
No.5
Java&Spring記事人気No5
Ruby
WindowsでRubyをインストールする方法!RubyInstallerとMSYS2を使った完全ガイド
No.6
Java&Spring記事人気No6
Rails
RailsモデルとActive Record基礎|ID戦略を完全理解!AUTO INCREMENT・UUID・ULIDの比較と導入手順
No.7
Java&Spring記事人気No7
データベース
ACID特性とは?データベーストランザクションの信頼性を初心者向けに徹底解説
No.8
Java&Spring記事人気No8
データベース
データベース正規化とは?初心者でもわかるデータ重複を防ぐSQL設計の基本