docker-composeを使って複数コンテナの管理を簡易化する

Gakuです。

前回はdockerを使用し、railsコンテナとpostgreSQLコンテナを立ち上げ連携する方法を掲載しました。

今回はdocker-composeなるものを導入し、複数コンテナの管理を簡易化したいと思います。

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を試みたいと思います( *`ω´)

コメントを残す

メールアドレスが公開されることはありません。