これまでMeshbluのリポジトリにあるDockerfileを修正して使っていましたが、最近になりnode:0.10-onbuildをベースイメージにした構成に大きく変更になりました。一つのイメージになっていたMongoDBとRedisもインストールされなくなりました。これにあわせてDocker Copmoseを使ってMeshblu、MongoDB、Redisのコンテナを起動するように変更しようと思います。
準備
以下の作業はすべてrootで行います。Ubuntu 14.04のサーバーを用意して実行します。
DockerとDocker Composeのインストール
DockerとDocker Composeはそれぞれオフィシャルのone-liner-installerが提供されているのでインストールはとても簡単です。
Dockerをインストールします。
$ wget -qO- https://get.docker.com/ | sh |
Docker Composeをインストールします。
$ curl -L https://github.com/docker/compose/releases/download/1.2.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose; chmod +x /usr/local/bin/docker-compose |
SSL証明書
MeshbluでSSL通信をするため証明書を自己署名で作成します。
$ mkdir -p /opt/docker_apps/certs/meshblu |
Docker Composeを使う
Docker Composeは以前Figと呼ばれていたDockerコンテナの管理ツールです。Meshbluのように環境変数の指定が多い場合や、複数コンテナをリンクしてサービスを起動するときオーケストレーションをYAMLに定義して、docker-composeコマンドでまとめて管理できます。Dockerオフィシャルツールなので安心して使えます。
docker-compose.yml
環境変数MONGODB_URI
のURLに指定するホスト名をどうやって取得するのか調べていると、Easily Configure Apps for Multiple Environments with Compose 1.2 and Much Moreに環境変数について書いてありました。
linkで指定したmongo
の名前はhostsに登録されるためそのまま使えます。
172.17.0.2 root_mongo_1 6291efdef64e |
Meshblu、MongoDB、Redisのコンテナをdocker-compose.ymlに定義します。
meshblu: |
コンテナの起動
指定されたコンテナを3つ起動します。
$ docker-compose up -d |
コンテナをリストします。無事起動しています。複数コンテナをリンクさせて起動するときにDockcer Composeはとても便利に使えます。
$ docker-compose ps |