この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
Dockerを試してみる(2)の続きです。 今回は複数のコンテナを楽ちんに管理したい〜というツールを試してみました。
■docker-compose
コンテナを複数起動すると管理が煩雑になったり、コンテナの起動順番を気にしながらとか面倒なことが多くなります。また、runでコンテナを実行する際もコマンド引数を覚えたりするのが大変で結局シェルスクリプトを書いたりとか。
そんな面倒を解決してくれるのが、docker-compose というコマンドです。
docker-composeは、Windows/macOS版の docker-toolbox では利用可能になっています。
標準でインストールされていない場合は、docker公式のドキュメント に従いインストールします。
docker-composeの流れ
- docker-compose.yml を編集
- docker-compose up を実行
- docker-compose downでコンテナ終了&削除
前提
railsのサンプルアプリを作って、その直下に Dockerfile を配置します。
今回はクイックスタートを参考に、ruby自体もコンテナを使います。
$ mkdir myapp && cd myapp
$ vi Dockerfile
$ vi Gemfile
$ touch Gemfile.lock
$ vi docker-compose.yml
$ docker-compose run web rails new . -B --force
$ ls -l
$ sudo chown -R myuser:mygroup
$ vi Gemfile
rubyracerのコメントを外す
$ docker-compose build
docker-compose.yml
設定ファイルです。railsでおなじみのYAML形式です。
version: '2'
services:
web:
build: .
command: bundle exec rails s -b 3000 -b '0.0.0.0'
ports:
- "3000:3000"
volumes:
- .:/myapp
links:
- db
db:
image: mysql
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=1
アプリ起動
database.yml のホストを db に設定します。その後に次のコマンドを実行します。
$ docker-compose up # -d オプションを付けるとバックグラウンド実行
$ docker-compose exec web rake db:create
ブラウザで、開くといつもの画面が表示されます。
http://(docker-machine ipのアドレス):3000/