AWS Elasticsearch Serviceと同じバージョンの環境をDockerで作る方法

elastic_search

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

モバイルアプリサービス部@モバイルバックエンドチームの五十嵐です。

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/