Dockerを使ってRuby on Rails環境をコマンド5行で立ち上げる

Docker のイメージを使い Ruby on Rails 環境を立ち上げる方法を紹介します。

今回は、公式イメージとして提供されている Ruby on Rails の rails:onbuild を使います。

環境
・Mac OS X El Capitan
・Docker for Mac β

参考:Docker for Macを使ってみた

Ruby on RailsをDockerで立ち上げる

Ruby on Rails のコンテナを立ち上げるには、以下のコマンド5行を実行することで可能です。

$ docker run -it --rm --user "$(id -u):$(id -g)" -v "$PWD":/usr/src/app -w /usr/src/app rails rails new --skip-bundle webapp
$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app ruby:2.1 bundle install
$ docker build -t rails-onbuild .
$ echo "FROM rails:onbuild" > Dockerfile
$ docker run --name rails01 -p 8080:3000 -d my-rails-app

http://localhost:8080/ にアクセスすると以下のように表示されます。

docker-rails

次より、各コマンドについて説明していきます。

Docker コマンドの説明

Ruby on Railsのプロジェクトを作成

作業ディレクトリに移動し、以下のコマンドを実行します。すると、新しく webapp ディレクトリが作成されます。これがプロジェクトのディレクトリとなります。

webapp は任意のディレクトリ名に変更してください。

$ docker run -it --rm --user "$(id -u):$(id -g)" -v "$PWD":/usr/src/app -w /usr/src/app rails rails new --skip-bundle webapp

Gemfile.lockを作成

今回作ったプロジェクトには、Gemfile.lock がないので、これも Docker コマンドで作成します。webapp ディレクトリに移動してから、以下のコマンドを実行します。

$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app ruby:2.1 bundle install

Gemfile.lock がないと、次のステップで以下のようなエラーとなるので気をつけてください。

lstat Gemfile.lock: no such file or directory

Dockerfile を作成

次に、イメージの元になる Dockerfile を webapp ディレクトリに作成します。下記のコマンドで作成できます。

$ echo "FROM rails:onbuild" > Dockerfile

テキストエディタで作成する場合は、以下の1行だけの Dockerfile を作成してください。

FROM rails:onbuild

イメージを作成

webapp ディレクトリで、以下のコマンドを実行しイメージ(rails-onbuild)を作成します。

イメージ名の rails-onbuild は必要に応じて変更してください。

$ docker build -t rails-onbuild .

コンテナを作成しバックグラウンドで起動

作成したイメージを元にコンテナ(my-rails-app)を作成します。

$ docker run --name my-rails-app -p 8080:3000 -d rails-onbulid

これで完了です。


イベント

2017/12/05(火)
Design Thinking Square