Dockerfileを使って一撃でelasticsearch + kibana3の動くマシンを用意する。

とうも、はせひろと申します。

去年に比べるとかなり仕事も落ち着いてきて、少しずづですが余裕が出てきました。

というわけで、表題にあるようなことをやっておいたので、備忘録としてここにおいておきます。

あ、もちろんみなさんはDockerの使えるマシンがありますよね?・・・ありますよね?

なければDockerを使えるようにしておいてください。

ちなみにDockerのバージョンは0.11.1です。

Dockerfileを利用したイメージの作成はdocker build ${directory}コマンドで実施するのですが、このときに指定するdirectoryにはDockerfileが配置されている必要があります。

また、そのほかのbuild時に必要なファイルなどがあれば、${directory}/resource/xxxxxxx.tar.gz のようにしておくことで利用が可能です。

何はともあれ、僕の備忘録なので説明もそこそこにして、僕が容易した${directory}配下の構成はこんな感じです。

kibana3+elasticsearch
│  Dockerfile
│  
└─resource
    │  80Proxy
    │  elasticsearch-1.2.1.tar.gz
    │  start.sh
    │  
    └─kibana3

elasticsearchについてはtar.gzを直接持っておいておきました。
kibana3についても最初から置いておきました。ちなみに「kibana3」配下にはHTMLやらjsがたくさん置いてあります。

80Proxyはapt-getのプロキシ設定用で、start.shはdocker run時にこのシェルを起動するようにして、このシェルから必要なサービスを起動するようにしてあります。

コンテナを起動させたときにサービスを自動起動させる方法が分からなかったので、とりあえずこうしています。良い方法があれば教えて下さい。

そんでDockerfileはこちら。


gist69de0349c3d0cc154598

あ、fluentdも入っているね。

というか基本的なことが分かっていなかったんだけど、docker runしてもそのときに実行されるコマンドが終了すると、コンテナも止まってしまうのね。

\-dオプション付ければ大丈夫と思っていたけど違ったようで。

なので、start.shの最後には/bin/bashと書いておいて落ちないようにしている。