- 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.
ここでのbuildはrailsをinstallしてrails new
できるようにするため
$ docker-compose run --rm app bundle exec rails new . -d postgresql --skip-bundle --skip-turbolinks
$ docker-compose run --rm app bundle exec rails new . -d postgresql --skip-javascript --skip-turbolinks --skip-bundle
--skip-bundle
しているのは、このあと再buildするときに走るbundle installと処理が重複するため
Overwrite /var/src/app/README.md? (enter "h" for help) [Ynaqdhm]
と聞かれるので、 n
でReturn
Overwrite /var/src/app/Gemfile? (enter "h" for help) [Ynaqdhm]
と聞かれるので、 Y
でReturn
ここまでで初期パッケージ群が装備される
- appコンテナにbootsnap等がbundle installが実行されていないと、docker-composeの起動コマンドが動かない
なので再度
$ docker-compose build
$ 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で起動扠せねばならぬ問題があるため、起動時に叩くシェルを作るか