Posted at
DockerDay 18

Elasticsearchのローカル環境をDocker Composeで用意する

More than 1 year has passed since last update.

Dockerアドベントカレンダーの18日目の記事です。

参考:http://qiita.com/tukiyo3/items/2fe940455c06323063a1

「Elasticsearchの開発環境をローカルに用意したいな」というのと、「kibana5のDev Tools使いたいな」というと、「Dockerアドベントカレンダー書かねば・・・」というのでやってみました。


環境

Docker for macです。

$ sw_vers

ProductName: Mac OS X
ProductVersion: 10.12
BuildVersion: 16A323

$ docker -v
Docker version 1.12.5, build 7392c3b

$ docker-compose -v
docker-compose version 1.9.0, build 2585387


Docker Compose

要件としては


  • Elasticsearchに投入したデータをkibanaでみたい

  • kibanaのDev ToolsでElasticsearchにデータ投入したい

  • インデックスデータを消失させたくない

あたりなので最低限の記述にしています。


docker-compose.yml

  elasticsearch:

image: elasticsearch:5
ports:
- "9200:9200"
- "9300:9300"
volumes:
- ./es_data/:/usr/share/elasticsearch/data/
kibana:
image: kibana:5
ports:
- "5601:5601"
links:
- elasticsearch
environment:
- ELASTICSEARCH_URL=http://elasticsearch:9200


起動する

docker-compose upで起動すればOKです。

$ docker-compose up

Recreating elasticv5_elasticsearch_1
Recreating elasticv5_kibana_1


Elasticsearchの接続確認

$ curl localhost:9200 

{
"name" : "JU1uhbk",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "r6__oQDpTc2fUKkNKPohEA",
"version" : {
"number" : "5.1.1",
"build_hash" : "5395e21",
"build_date" : "2016-12-06T12:36:15.409Z",
"build_snapshot" : false,
"lucene_version" : "6.3.0"
},
"tagline" : "You Know, for Search"
}


kibanaにアクセスする

http://localhost:5601/app/kibana#/dev_tools/console?_g=()

にアクセスすると、Elasticsearchのコンソール画面が表示されます。

以下のようなクエリを書いてデータ投入します。

PUT dev_tools/test/1

{
"Name": "John Doe",
"date": "2016-12-25",
"message": "This is first content"
}

スクリーンショット 2016-12-26 0.18.19.png

右側にPUTの結果が表示されます。

GET _searchのようなクエリを書くとそのままデータの検索もできます。

スクリーンショット 2016-12-26 0.20.05.png


インデックスデータの場所について

docker-compose.yml./es_data/へインデックス情報を保存するように指定していますので、以下のようになります。

$ tree -L 5

.
├── docker-compose.yml
└── es_data
└── nodes
└── 0
├── _state
│   ├── global-6.st
│   └── node-6.st
├── indices
│   ├── 8KtEjxzpS3qFdYpqinKpJg
│   ├── 8YEVLUglQNS7t7C1w5yy-w
│   └── n424EH2uReu9S4GOqUsGzg
└── node.lock

テストデータを使いまわしたい時って結構あると思うので、弊害を感じるまではマウントさせておくつもりです。

もし不要になった場合はes_dateディレクトリごと消せばよさそうかなと思います。(間違ってたらすみません)


[ハマったメモ]docker-composer.ymlをタブインデントする

タブインデントでymlを書くと、起動時に事故ります。

$ docker-compose up

ERROR: yaml.scanner.ScannerError: while scanning for the next token
found character '\t' that cannot start any token
in "./docker-compose.yml", line 2, column 1


おまけ:公式Docker Imageリスト

Name
URL
Version

Logstash
https://hub.docker.com/_/logstash/
5.1.1, 5.1, 5, latest (5/Dockerfile)
5.1.1-alpine, 5.1-alpine, 5-alpine, alpine (5/alpine/Dockerfile)
2.4.1, 2.4, 2 (2.4/Dockerfile)
2.4.1-alpine, 2.4-alpine, 2-alpine (2.4/alpine/Dockerfile)
1.5.6, 1.5, 1 (1.5/Dockerfile)
1.5.6-alpine, 1.5-alpine, 1-alpine (1.5/alpine/Dockerfile)

Elasticsearch
https://hub.docker.com/_/elasticsearch/
5.1.1, 5.1, 5, latest (5/Dockerfile)
5.1.1-alpine, 5.1-alpine, 5-alpine, alpine (5/alpine/Dockerfile)
2.4.3, 2.4, 2 (2.4/Dockerfile)
2.4.3-alpine, 2.4-alpine, 2-alpine (2.4/alpine/Dockerfile)
1.7.6, 1.7, 1 (1.7/Dockerfile)
1.7.6-alpine, 1.7-alpine, 1-alpine (1.7/alpine/Dockerfile)

kibana
https://hub.docker.com/_/kibana/
5.1.1, 5.1, 5, latest (5/Dockerfile)
4.6.3, 4.6, 4 (4.6/Dockerfile)
4.1.11, 4.1 (4.1/Dockerfile)