Rails7.1以降のDocker環境構築がめっちゃ簡単になっていた!

Ruby on Rails

最新のRuby on Railsをローカルで触ってみたいなと思い、久々に環境構築に取り組んでいたところ、Rails7.1以降ではそれまでの環境構築手順と変わっていることが分かりました。
というのもRails7.1でのリリースで、RailsとしてデフォルトでDockerをサポートするようになっていたんです!知らなかった…
Ruby on Rails 7.1 リリースノート – Railsガイド

Rails7.1以降の環境構築をググってみると、それ以前の環境構築手順を組み合わせた記事が多く、本来Railsが提供したかったものとは違うのかなと思ったので、今回はそれをまとめてみようと思います。
開発環境の構築のみであり、本番環境の構築は試せていませんが、正直手順がすごく簡単になっててとてもいいなと思いました!

これまでの開発環境構築

DockerでRails環境を構築しようとしたとき、これまでだとDocker本家にも書かれているような以下の手順で行っていました。
クィックスタート: Compose と Rails — Docker-docs-ja 24.0 ドキュメント

簡単な流れを書くと以下の通り。

  1. Dockerfiledocker-compose.ymlGemfile を用意する
  2. Dockerコンテナをbuildして起動させ、rails new でプロジェクトを作成する
  3. データベースのセットアップ
  4. railsアプリ起動

Rails7.1以降の開発環境構築

基本ガイド通りです。

前提

  • Dockerがインストールされていること
  • VSCodeがインストールされていること

手順

Railsプロジェクト作成

rails-new コマンドを使ってRailsプロジェクトを作成します。
なのでまずはコマンドをこちらのREADMEに従ってダウンロード&インストールします。
(パスを通す必要があるので、私は /usr/local/bin にダウンロードしたファイルを配置しました)

その後、以下の通りコマンドを実行すればRailsのプロジェクトが作成されます。
また --devcontainer オプションもつけることで、開発時もコンテナ上で開発できるよう、必要なファイルの作成も行なってくれます。

$ rails-new myapp --devcontainer

このとき、rails new のコマンドに渡せるオプションは指定できるので、例えばDBの種類を指定もここで可能ですし

$ rails-new myapp --database=mysql --devcontainer

RubyやRailsのバージョン指定がしたいときは、以下のようにもできます

$ rails-new --ruby-version 3.2.0 --rails-version 8.0.0 myapp --devcontainer

これでRailsプロジェクトを作成することができました。

なお、プロジェクトのルートディレクトリにある Dockerfile には本番環境用の記述がなされており、開発環境内での開発においてはこのファイルの修正は特に必要ありません。
Rails7.1以前ではルートディレクトリの Dockerfile を開発環境に使う(場合によっては本番環境も)という運用が多かったので、ここが違うところかなと思います。

DevContainer起動

DevContainerは、開発環境をコンテナ化して実行できる機能です。
開発に必要なツールやライブラリがすべて含まれた環境で即座に開発を始めることができ、またチーム全体で統一された開発環境を簡単に共有できるというメリットもあります。

今回 --devcontainer オプションをつけてプロジェクトを作成したので、DevContainerの設定が .devcontainer フォルダに自動で行われています。

VSCodeでは、プロジェクトのフォルダを開いたときDevContainerの設定が検出されると、そのコンテナ環境内でプロジェクトを開くことができるので、これを使っていきます。
まずは、VSCodeで以下の拡張機能をダウンロードします。
Dev Containers – Visual Studio Marketplace

その状態でRailsプロジェクトを開くと、右下に通知が出てくるのでコンテナーで再度開く をクリックします。
(もしくは左下の><となっている部分をクリックすると画面上部にコンテナーで再度開くの選択肢が出てきます)

これで開発用のコンテナが立ち上がり、ターミナルではこのコンテナ内で直接 rails consoleといったコマンドを打つことができるようになりました。

またサーバを立ち上げるためのコマンドが bin/dev として用意されているので、これを実行すればアプリとしての動作確認もできるようになります。

$ bin/dev
=> Booting Puma
=> Rails 8.0.1 application starting in development 
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 6.6.0 ("Return to Forever")
* Ruby version: ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +YJIT +PRISM [aarch64-linux]
*  Min threads: 3
*  Max threads: 3
*  Environment: development
*          PID: 1579
* Listening on http://127.0.0.1:3000
* Listening on http://[::1]:3000
Use Ctrl-C to stop

まとめ

長々と書いてはいますが、新規Railsプロジェクトを立ち上げたいときは結論 rails-new コマンドを打って、VSCode上でDevContainerを立ち上げるだけという、とてもシンプルな手順になっていました!
特にDevContainerの活用により、チーム開発においても統一された環境を素早く構築できるようになったのは大きなメリットだと思います。
ぜひ今後も活用していきたいです。

タイトルとURLをコピーしました