読者です 読者をやめる 読者になる 読者になる

倒れるときは前のめり。

カレーが好きです。

Docker上にRails5×MySQLな新規プロジェクトを爆速で構築する

概要

Docker Compose を使って、ローカル環境を(ほぼ)汚さずに Rails5 と MySQL が動く環境を作ったので公開してみる。キモは、rails new で新しくRailsプロジェクト作成後に行う、便利Gemのインストールやめんどうくさい設定もろもろを、Rails Application Template で自動化した点。

Rails on Docker

README.md書いてない適当ぷりではあるけれどそこは勘弁。

動作環境(2017/3/5時点)

ホスト

コンテナ

構成

$ tree
.
├── Dockerfile.dev
├── Gemfile
├── Gemfile.lock
├── docker-compose.yml
└── templates
    ├── Gemfiles.rb
    └── settings.rb

1 directory, 6 files.

How to use

mkdir your_rails_app && cd your_own_app
git clone git@github.com:cheezenaan/rails-on-docker.git . && rm -rf .git
docker-compose run --rm webapp rails new . --database=mysql --force -BT -m ./templates/Gemfiles.rb
docker-compose run --rm webapp bundle e rails app:template LOCATION=./templates/settings.rb
docker-compose up -d webapp

Railsアプリには http://localhost:3000 からアクセスできる。

補足

Rails Application Templates

今回の開発環境構築にあたり苦労した箇所。 Application template の場合はGemのインストールやアプリケーションの設定をまとめて行えるのだが、今回 Docker上 で行う場合は

Could not find gem 'pry-coolline' in any of the gem sources listed in your Gemfile.

とエラーが表示されて進まなくなる。Gemのインストールまでで作業を区切った後、再度 docker-compose run ~ することでなんとかなった。

こういうときはどうする?

Gem を新しく追加したい

ホスト側のGemfileを編集してから、

docker-compose exec webapp bundle install

OK.

rubocop でコードスタイルをチェックしたい

ホスト環境にインストールすればいいのでは。

gem install rubocop

もっさりして重い

Docker for Mac特有の問題らしい。docker-sync使うとわりとマシになる。

いちいち docker-compose exec [container-name] ~~~ 打つのだるい

わかる。自分はコマンドライン補完に頼ってるからまだ耐えられるけれどどうにかしたい。 下の参考記事でも紹介されているラッパースクリプトを用意するのがよさそう。

ぐちゃぐちゃになったから環境作り直したい

docker-compose down --volumes --remove-orphans --rmi all

でコンテナ破棄した後、docker-compose up なりすればいい。

参考記事