AWS Elasticsearch Serviceと同じバージョンの環境をDockerで作る方法
モバイルアプリサービス部@モバイルバックエンドチームの五十嵐です。
AWS Elasticsearch Serviceを利用するアプリケーションのテストを行うため、ローカル環境にAWSと同じ環境を作りたくなったのでDocker Hubにあるコンテナで作成しました。
環境
AWS Elasticsearch Service環境
投稿時点のバージョンは以下の通り。
- Elasticsearch 1.5.2
- Kibana 4.0.3
利用するdockerコンテナ
ローカル環境
MacのDockerToolbox(Docker Machine)を利用します。
$ docker-machine -v docker-machine version 0.4.1 (e2c88d6) $ docker -v Docker version 1.8.1, build d12ea79
手順
dockerの起動
docker-machineのVMが起動していない場合は、起動します。
$ docker-machine start default
elasticsearchコンテナの起動
elasticsearchコンテナを起動します。
$ docker run --name elasticsearch15 -p 9200:9200 -p 9300:9300 -d elasticsearch:1.5
kibanaコンテナの起動
kibanaコンテナを起動します。 --link
オプションでelasticsearchコンテナとリンクさせます。
$ docker run --name kibana403 -e ELASTICSEARCH_URL=http://elasticsearch15:9200 -p 5601:5601 --link elasticsearch15:elasticsearch15 -d kibana:4.0.3
localhostで接続できるようにする
Dockerとは直接関係ないですが、このままでは docker-machine ip default
のIPアドレスでしか接続できないので、docker-machineのVMのポートフォワーディングをして、localhostで接続できるようにします。
$ VBoxManage controlvm default natpf1 "es1,tcp,127.0.0.1,9200,,9200" $ VBoxManage controlvm default natpf1 "es2,tcp,127.0.0.1,9300,,9300" $ VBoxManage controlvm default natpf1 "es3,tcp,127.0.0.1,5601,,5601"
確認
ローカル環境のブラウザで以下にアクセスして表示されれば成功です。
- Elasticsearch: http://localhost:9200/
- Kibana: http://localhost:5601/
おまけ
elasticsearchにプラグインを追加する場合、以下のように行なえます。(Kibana4もプラグインで入ると思ったんですが、やり方が分かりませんでした。)
docker exec elasticsearch15 bin/plugin install elasticsearch/marvel/latest
MarvelはElasticsearchのモニタリングツールですが、その他にもいくつかの機能が組み込まれていて、なかでもSenseはElasticsearchへのAPIリクエストを補完してくれるので開発途中はとても便利です。
- Marvel: http://localhost:9200/_plugin/marvel/