Gakuです。
前回はdockerを使用し、railsコンテナとpostgreSQLコンテナを立ち上げ連携する方法を掲載しました。
今回はdocker-composeなるものを導入し、複数コンテナの管理を簡易化したいと思います。
Contents
docker-composeとは何ぞ?
ここらへんの記事をみると幸せになれるかもしれません。
複数コンテナを1コマンドで立ち上げたり、docker run時のめんどうなオプションを記述して管理できる仕組みです。
ファイル構成
ファイル構成は下記のような感じで構成します。
. ├── docker-compose.yml └── rails └── Dockerfile
Dockerfileは前回と同様のDockerfileを使用しております。
docker-compose.ymlの編集
postgreSQLとrailsコンテナを管理するため、docker-compose.ymlを下記のように編集します。
postgres0: image: postgres:9.5.4 ports: - 5432:5432 rails: build: rails ports: - 3000:3000 volumes: - /Users/gaku/Documents/develop/projects:/usr/src/docker-rails-test links: - postgres0:postgres0 tty: true
設定内容はdocker run時のオプションと似ているのでとっつきやすいかと思います。
これで準備完了です( ^ω^ )
実行してみる
実行はすごく簡単です。
docker-compose build //イメージの作成 docker-compose pull //イメージのダウンロード docker-compose up -d //コンテナの生成
たったこれだけです。
3コマンドで全てのコンテナのイメージ作成からコンテナ生成までやってくれます。
こ。。。これがdockerの強さか。。。
後片付けのコマンド
コンテナの後片付けもすごく簡単です。
docker-compose stop //全てのコンテナの停止 docker-compose rm //全てのコンテナの削除
今まで一つ一つコンテナを削除していたのですが、これで一気に削除できます。
う〜ん。きもちぃε-(´∀`; )
/bin/bashが起動できない
今までdocker run -it コマンドでbashを立ち上げる設定をしていたのですが、docker-composeには-i相当の機能がないらしい。
(-tはdocker-composeのtty:trueの記述が該当している。)
なので、docker-composeで/bin/bashを立ち上げる場合、下記コマンドで実行してあげる必要がある。
docker exec -it <コンテナID> bash
おわりに
docker-composeを知るまで、
「dockerめんどくせぇな〜。vagrant+virtualBOXのが良いんじゃね(´q` )」
って思っていましたが、今回composeやってみて世界が変わりました。
dockerで設定すれば、もう環境構築ほとんどやらんでええやん!すばらしき世界!
2日間dockerを触ってきて、だいたいのことはできるようになりました。
今度はheroku上のdocker-herokuなるもので、herokuへのUPを試みたいと思います( *`ω´)