March 05, 2017
Docker Compose を使って、ローカル環境を(ほぼ)汚さずに Rails5 と MySQL が動く環境を作ったので公開してみる。キモは、rails new
で新しく Rails プロジェクト作成後に行う、便利 Gem のインストールやめんどうくさい設定もろもろを、Rails Application Template で自動化した点。
README.md 書いてない適当ぷりではあるけれどそこは勘弁。
$ tree
.
├── Dockerfile.dev
├── Gemfile
├── Gemfile.lock
├── docker-compose.yml
└── templates
├── Gemfiles.rb
└── settings.rb
1 directory, 6 files.
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 からアクセスできる。
今回の開発環境構築にあたり苦労した箇所。 Application template の場合は Gem のインストールやアプリケーションの設定をまとめて行えるのだが、今回 Docker 上 で行う場合は
Could not find gem 'pry-coolline' in any of the gem sources listed in your Gemfile.
とエラーが表示されて進まなくなる。Gem のインストールまでで作業を区切った後、再度 docker-compose run ~
することでなんとかなった。
ホスト側の Gemfile を編集してから、
docker-compose exec webapp bundle install
で OK.
ホスト環境にインストールすればいいのでは。
gem install rubocop
Docker for Mac 特有の問題らしい。docker-sync 使うとわりとマシになる。
docker-compose exec [container-name] ~~~
打つのだるいわかる。自分はコマンドライン補完に頼ってるからまだ耐えられるけれどどうにかしたい。 下の参考記事でも紹介されているラッパースクリプトを用意するのがよさそう。
docker-compose down --volumes --remove-orphans --rmi all
でコンテナ破棄した後、docker-compose up
なりすればいい。