【Windows】DockerでRuby on Rails開発環境構築方法
当ページのリンクには広告が含まれています。
✓目次
この記事の対象者
・ Rails version: 5.0.0.1, Ruby version: 2.4.5, MySQL 5.7系の環境構築方法を知りたい人
4つのファイル(Dockerfile, Gemfile, Gemfile.lock, docker-compose.yml)を用意する
Windows10のPCにDockerを導入し、Ruby on Rails環境を構築する大まかな流れは以下のとおりです。
- Docker for Windowsのインストールと再起動→再起動後、Dockerが起動しているかタスクバーのアイコンを確認
- PowerShellを起動し
docker run hello-world
を実行してDockerが正常に動作するかを確認 - 任意の場所にフォルダを作成し、以下のファイルを用意する
- Dockerfile
- Gemfile
- Gemfile.lock
- docker-compose.yml
- Dockerfile
- 上記4つのファイルを用いてコンテナ起動
以降は主に、3. と4. の工程を中心にまとめています。
Dockerfile
所定のフォルダに以下のようなDockerfileを用意します。
1 | FROM ruby:2.4.5 |
Dockerfileには、Railsを実行するためのファイルやパッケージを、イメージに含めるための定義が書かれています。
このDockerfileがビルドされることで、Docker Imageというコンテナ仮想環境の雛形が作成されるのです。
ruby:2.4.5
のコロンの前の部分を、リポジトリと言い、コロンの後ろを、タグといいます。
この場合、2.4.5
のタグを書いています。
リポジトリには様々なバージョンがあります。詳細は、以下のDocker Hubを参照してみてください
https://hub.docker.com/_/ruby?tab=tags&page=1&ordering=last_updated
COPY . /app
はDockerファイルの置いてあるフォルダの内容をすべてコンテナ内の/appディレクトリにコピーをしています。これは、Railsのアプリケーション実行に必要なファイルを、全てコンテナの中に含めるために記載しています。そのため、余計なファイルを含めてしまうと、コンテナに含まれてしまうので関係ないファイルは置かないようにしましょう。
GemfileとGemfile.lock
1 | source 'https://rubygems.org' |
GemfileはインストールするGemを定義しておくためのファイルです。
source
には、GemのダウンロードもとのURLを記載しておきます。
そしてインストールするGemにはRailsのバージョンである5.0.0.1を指定しています。
このファイルが配置されているディレクトリで、$ bundle install
コマンドを実行することで、RailsのGemをダウンロードして、インストールが実行されます。
Gemfile.lockは、最初の時点では空のファイルとなります。これは、通常直接編集するものではなく、$ bundle install
を行った場合に、実際にインストールしたGemのリストとバージョンが自動的にGemfile.lockに配置されます。
1 | (空のファイル) |
Gemfile.lockの用途は、サーバや他の開発者のPCなど、別の環境で同じRailsアプリを動かす場合に、同じGemをインストールするために仕様されます。
Gemのインストールの際にはインストールするGemを動かすために必要な別のGemも一緒にインストールされます。
こういったあるライブラリーが別のファイブラリを必要としていることを依存関係といいます。
Gemのインストール時には、この依存関係の解決が行われ、関係する様々なGemがまとめてインストールされます。
依存関係も含めて何がインストールされたのかが、すべてGemfile.lockに記載されます。
そして、このGemfile.lockを別のPCやサーバに持って行って、bundle installコマンドを実行すると、Gemfile.lockに記載された内容にしたがって、Gemのインストールが実行される、というわけです。
docker-compose.yml
Docker-compose.ymlは、Dockerで複数のコンテナを、設定に従ってまとめて起動するために使用します。
Docker-compose.ymlは、Dockerで複数のコンテナを、設定に従ってまとめて起動するために使用します。
Railsを実行するコンテナとMySQLサーバを実行するコンテナの二つを起動する定義を記載してあります。
以下のようなコードが書かれたファイルを用意します。
1 | version: '3' # docker-compose.ymlのフォーマットバージョン |
Rails開発環境の構築
ここまで解説した設定ファイルを使用して、Railsの開発環境を動かしてみます。
まずは、解説したファイルを配置したフォルダでターミナルを開きます。Windowsを使用している方は、PowerShellを使用しましょう。
1 | $ cd documents/rails |
以下のコマンドを実行します。
1 | $ docker-compose run web rails new . --force --database=mysql |
docker-compose run web
の部分は、docker-composeファイルに定義したweb:のRailsコンテナ設定を指しており、Railsのコンテナ上で、後ろに続くコマンドを実行することを意味しています。
--force
は既存ファイルを上書きするオプション。--database=mysql
はMySQLを使用する設定を明示的に示すオプションです。
実行が完了すると、Railsのファイルが作成されます。
1 | $ ls -l |
ここでGemファイルに追記されたGemのインストールや作成されたファイルをコンテナ内に取り込むために、以下のコマンドで、もう一度ビルドを実行します。
1 | $ docker-compose build |
ビルドが完了したらRailsで使用するデータベースの設定ファイルを編集します。
ファイルはConfigディレクトリ内にあるdatabase.ymlになります。default:
の項目にある、パスワードとホストを変更します。
パスワードは、docker-compose.ymlに記載したMySQL_ROOT_PASSWORD環境変数のpasswordに合わせる必要があります。
ホスト名もdocker-compose.ymlに記載したMySQLサーバのサービス名であるdbに合わせます。
1 |
|
設定が完了したら、以下のコマンドを実行。のコマンドにより、RailsサーバーのコンテナとMySQLサーバのコンテナが起動します。
1 | $ docker-compose up -d |
コンテナが起動しているか確認します。
1 | $ docker-compose ps |
起動はしましたが、まだ開発環境用のデータベースが作成されていない状態なので、次のコマンドでデータベースを作成します。
1 | $ docker-compose run web bundle exec rake db:create |
これも先ほどと同様に、bundle exec以降がRailsのコンテナ内で実行されるコマンドです。
bundle exec rakeはRails環境にインストールされているrakeコマンドの実行を表しており、後ろにはdb:createと書いてあります。
rakeコマンドは、Railsで様々なタスクを実行する際に使用されるもので、rake db:createとした場合は、dbがまだ存在しない場合に新規に作成してくれます。
つまり、bundle exec rakeの部分は、Rails環境にインストールされているrakeコマンドを実行し、rake db:createでRailsで使用するデータベースをMySQLサーバ上に作成してくれます。
これで、Railsサーバにアクセス可能な状態になっているはずですので、ブラウザのURL欄にlocalhost:3000と打って開いてみましょう。
まとめ
- 4つのファイル(Dockerfile, Gemfile, Gemfile.lock, docker-compose.yml)を用意する
- Dockerfile:
- Gemfile:
- Gemfile.lock
- docker-compose.yml
- 以下のコマンド、設定ファイルを編集して環境構築
$ docker-compose run web rails new . --force --database=mysql
$ docker-compose build
- /Config/database.ymlを編集
$ docker-compose up -d
$ docker-compose run web bundle exec rake db:create
localhost:3000
にブラウザでアクセス。
あとはコードを書きながら学習するだけです。
忙しい毎日を過ごしながらも効率的にプログラミングを学びたい方に最適なプログラミングスクール・教材を記事にまとめてますので、よろしければ以下の記事も見ていってください。
>> 【厳選4つ】未経験におすすめのプログラミングスクール・教材! - omathin blog
「1万円以上お金が出せない」「低コストでRailsの基礎を学びたい」という方はUdemyを活用した学習も検討してみてください。30日間の返金保証、および一流講師へのQ&Aシステムが整ったオンライン学習プラットフォームなので安心です。