0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Mac】DockerでRailsチュートリアルの開発環境を作る最短ルート

0
Last updated at Posted at 2025-12-04

Railsチュートリアル(第7版)を進めるための Rails 7.0.4.3 + Ruby 3.2.9 環境 を、Docker + docker compose で簡単に構築できる構成を作ったのでメモとして残しときます。(2025年11月時点)

ローカルにRubyやNodeを直接入れずに、
docker compose up だけでRailsの初期画面表示までできる構成です。

この記事は、以下の記事を参考にしつつ、
Railsチュートリアル用にディレクトリ構成やバージョンを調整しています。

参考にした記事:
Ruby on Rails x Docker環境を超シンプルに構築してみた


最終的にできること

Railsチュートリアルと同じ

  • Rubyバージョン 3.2.9
  • Railsバージョン 7.0.4.3
  • environment ディレクトリ構成

そして

  • localhost:3000 でRails起動確認まで完了

前提

  • Docker Desktopインストール済み
  • gitインストール済み、global設定等済み

1. プロジェクト用ディレクトリを作成

まず作業用ディレクトリを作って移動します。
例として今回は作業用ディレクトリを~/repos/rails7_tutorialとします。

mkdir ~/repos/rails7_tutorial
cd ~/repos/rails7_tutorial

ターミナル操作になれてない人はエディタをこのタイミングで開くと楽です。

cursor .
# または
code .

2. Gemfile を作成

プロジェクト直下に Gemfile を作成し、以下を貼り付けます。

source 'https://rubygems.org'
gem 'rails', '7.0.4.3'

3. Dockerfile を作成

同じくプロジェクト直下に Dockerfile を作成します。

FROM ruby:3.2.9

WORKDIR /environment

# GemfileとGemfile.lockファイルを
# イメージのenvironmentディレクトリ内にコピー
COPY Gemfile* /environment/

RUN bundle install

EXPOSE 3000

CMD ["rails", "server", "-b", "0.0.0.0"]

ポイント

  • Rubyは 3.2.9 固定
  • 作業ディレクトリを Railsチュートリアルに合わせて /environment に変更

4. compose.yml を作成

次に compose.yml を作成します。

version: '3.8'

services:
  web:
    build: .
    ports:
      - '3000:3000'
    volumes:
      - type: bind
        source: ./environment
        target: /environment

5. environment ディレクトリ作成

プロジェクト直下に environment フォルダを作成します。

mkdir environment

ここまででディレクトリ構成はこうなります。

rails7_tutorial
├── Dockerfile
├── Gemfile
├── compose.yml
└── environment/

6. Dockerイメージのビルド & Railsプロジェクト作成

まずビルドしますー。

docker compose build

次にコンテナ上で Rails プロジェクトを作成します。

docker compose run web sh -c "RUBYOPT='-rlogger' rails new . --database=sqlite3"

Ruby 3.2 + Rails 7 の組み合わせで logger 周りのエラーが出る場合があるため、その回避用に RUBYOPT を指定しています。

sqlite3を明示しなくてもデフォルトでsqliteになるっぽいですが、わかりやすくするため。

これで environment 配下に Rails プロジェクト一式が生成されます。


7. Gemfile を Railsチュートリアル仕様に変更

以下の内容に 2箇所のGemfileを両方とも置き換えます。

  • ~/repos/rails7_tutorial/Gemfile
  • ~/repos/rails7_tutorial/environment/Gemfile

Dockerビルド時に使われるGemfileと、Railsアプリ側のGemfileが別れているため両方変更しています。

Railsチュートリアル 第1章 リスト1.7の内容です。

source "https://rubygems.org"
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby "3.2.9"

gem "rails",           "7.0.4.3"
gem "sassc-rails",     "2.1.2"
gem "sprockets-rails", "3.4.2"
gem "importmap-rails", "1.1.5"
gem "turbo-rails",     "1.4.0"
gem "stimulus-rails",  "1.2.1"
gem "jbuilder",        "2.11.5"
gem "puma",            "5.6.8"
gem "bootsnap",        "1.16.0", require: false
gem "sqlite3",         "1.6.1"
gem "concurrent-ruby", "1.3.4"

group :development, :test do
  gem 'reline', '0.5.10'
  gem "debug",   "1.7.1", platforms: %i[ mri mingw x64_mingw ]
end

group :development do
  gem "web-console",         "4.2.0"
  gem "solargraph",          "0.56.2"
  gem "irb",                 "1.10.0"
  gem "repl_type_completor", "0.1.10"
end

group :test do
  gem "capybara",                 "3.38.0"
  gem "selenium-webdriver",       "4.8.3"
  gem "webdrivers",               "5.2.0"
  gem "rails-controller-testing", "1.0.5"
  gem "minitest",                 "5.18.0"
  gem "minitest-reporters",       "1.6.0"
  gem "guard",                    "2.18.0"
  gem "guard-minitest",           "2.4.6"
end

8. Gemfile.lock を削除して再ビルド

一度古いlockファイルを削除。

rm ./environment/Gemfile.lock

再ビルド & 起動。

docker compose build
docker compose up

docker compose upでフォアグラウンド起動します。Ctrl+cで抜けます。
docker compose up -dだとバックグラウンド起動します。
両者の詳しい違いについてはお調べ下さい。

起動後、environment 配下に新しい Gemfile.lock が生成されるので、
それをプロジェクト直下にもコピーします。

cp ./environment/Gemfile.lock ./Gemfile.lock

9. Railsの起動確認

ブラウザで以下にアクセス。

http://localhost:3000

⭕️ Railsの初期画面(赤いロゴ)が出れば成功です。


10. Git の初期設定

(Gitのインストールやglobal設定などは終わっているものとして進めます。)

environment配下の .git を削除

Rails生成時に environment/.git が作られるので削除します。

rm -rf ./environment/.git

.gitignore 作成

プロジェクト直下に .gitignore を作成。

.DS_Store

今回は最低限 .DS_Store のみ入れています。
必要に応じて各自で追記してください。


11. GitHub にリポジトリを作成して push

GitHubで空のリポジトリを作成後、以下を実行します。

echo "# test_rails7_tutorial2" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/[アカウント名]/[リポジトリ名].git
git push -u origin main

まとめ

  • Railsチュートリアルの環境は Dockerで作ると楽です
  • 一回作ってしまえばdocker compose up だけで開発開始できます(あとはdocker compose stop, docker compose startを繰り返すくらいだと思います。)

Gemfileをいじったらビルドしなおした方がいいかも。チュートリアル内で確かgemを追加することがあったと思うのでそこら辺も時間ができたら追記しようと思います。


ただしこの記事の内容が難しいという場合は素直にRailsチュートリアルの指示通りGitHub Codespacesを使った方が良いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?