- Docker環境をローカルマシンに作成
- bundlerでFWなどのパッケージを導入して使用する想定
- RDBMSはPostgreSQLとする
Docker for Mac, Docker for Windows
dockerコマンド、docker-machineコマンド、docker-composeコマンド全部入り
In case of Mac, You can also use Homebrew
$ brew install docker
$ brew cask install docker
$ docker-machine create --driver virtualbox myrailsapp
$ docker-machine start myrailsapp
$ docker-machine ls
$ docker-machine env myrailsapp
# Run this command to configure your shell:
と出力されるので従う
DefaultではRuby on Rails最低限のGemのみ記載 この上に必要なGemを追加していきます。
docker-composeコマンドを使い、複数コンテナをbuild〜起動していく
- app
- db
- node(初期は使わないので削除してもよい)
(設定はdocker-compose.yml
)
$ docker-compose build
Successfully built.
$ docker-compose run --rm app rails new . -d postgresql --skip-bundle --skip-turbolinks --skip-test --skip
$ docker-compose up -d
コンテナの起動確認
$ docker ps
生成されたconfig/database.yml
の development:
配下に
database: <%= ENV['PG_DATABASE'] %>
username: <%= ENV['PG_USER'] %>
password: <%= ENV['PG_PASSWORD'] %>
host: db
を追加修正 ** postgresのdockerイメージは起動時に初期DBや初期ユーザをよしなに作成してくれることを留意しておく **
$ docker-compose restart app
$ open http://0.0.0.0
docker-machineの場合
$ open http://$(docker-machine ip myrailsapp)
Railsの初期画面が表示されればSetup Complete
変更をローカルにマージ後
$ docker-composer build
buildし直すことで、DockerfileのAddがGemfile&Gemfile.lockのキャッシュから更新があったときのみ検知してbundle install が走る
http://qiita.com/pocari/items/456052a291381895f8b3
Dockerマシンの中に入って
$ docker-machine ssh ****
VirualBoxの設定変更
$ sudo VBoxControl guestproperty set "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold" 5000
reach limit of inotify count in rails console
Error Message
Increasing the amount of inotify watchers
$ echo fs.inotify.max_user_watches=524288 | tee -a /etc/sysctl.conf && sysctl -p
$ cat /proc/sys/fs/inotify/max_user_watches
Dockerfileに組み込みたいが、Privilegedで起動扠せねばならぬ問題があるため、起動時に叩くシェルを作るか