Docker のイメージを使い Ruby on Rails 環境を立ち上げる方法を紹介します。
今回は、公式イメージとして提供されている Ruby on Rails の rails:onbuild を使います。
環境
・Mac OS X El Capitan
・Docker for Mac β
Ruby on RailsをDockerで立ち上げる
Ruby on Rails のコンテナを立ち上げるには、以下のコマンド5行を実行することで可能です。
1 2 3 4 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 コマンドの説明
Ruby on Railsのプロジェクトを作成
作業ディレクトリに移動し、以下のコマンドを実行します。すると、新しく webapp ディレクトリが作成されます。これがプロジェクトのディレクトリとなります。
webapp は任意のディレクトリ名に変更してください。
1 |
$ 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 ディレクトリに移動してから、以下のコマンドを実行します。
1 |
$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app ruby:2.1 bundle install |
Gemfile.lock がないと、次のステップで以下のようなエラーとなるので気をつけてください。
1 |
lstat Gemfile.lock: no such file or directory |
Dockerfile を作成
次に、イメージの元になる Dockerfile を webapp ディレクトリに作成します。下記のコマンドで作成できます。
1 |
$ echo "FROM rails:onbuild" > Dockerfile |
テキストエディタで作成する場合は、以下の1行だけの Dockerfile を作成してください。
1 |
FROM rails:onbuild |
イメージを作成
webapp ディレクトリで、以下のコマンドを実行しイメージ(rails-onbuild)を作成します。
イメージ名の rails-onbuild は必要に応じて変更してください。
1 |
$ docker build -t rails-onbuild . |
コンテナを作成しバックグラウンドで起動
作成したイメージを元にコンテナ(my-rails-app)を作成します。
1 |
$ docker run --name my-rails-app -p 8080:3000 -d rails-onbulid |
これで完了です。