docker pullしてきたElasticsearchのデフォルト設定を変える方法

dokcer pullでes社が提供するdocker imageを取得することができるがelasticsearch.yml を使いたくない場合がある。

例えばelasticsearchのデフォルトだとport 9200を使ってhttp通信を行うが、複数のESを立ち上げて検証したい場合などはデフォルトportと異なるものを使いたいことがるだろう。

Elasticsearch社の公式ドキュメントには

A. docker runの環境変数として渡す

B. dockerのbind mountを利用してlocalに配置された設定ファイルを読み込む

の二つの方法が提示されている。

ここではBの方法について解説する. 例えばelasticsearchをport 9201で繋げたいときはelasticsearch.ymlに以下のように記述する。

cluster.name: "docker-cluster"
network.host: 0.0.0.0
http.port: 9201

その上で以下のdockerコマンドを実行する.

docker run --mount type=bind,source="$(pwd)"/elasticsearch.yml,target=/usr/share/elasticsearch/config/elasticsearch.yml -d -p 9201:9201  -e "discovery.type=single-node" --name elasticsearch-port-9201 docker.elastic.co/elasticsearch/elasticsearch:6.6.1

注意 : elasticsearch社の公式ドキュメントに書かれているmountの方法は最新のdockerでは古い指定の仕方(>Docker 17.06)となっている. 

New users should try --mount syntax which is simpler than --volume syntax.               (Docker公式ドキュメントより)

-p 外部からアクセスされるポート番号:コンテナのポート番号を指定 

 -d バックグラウンド実行

最後に http://localhost:9201/ にアクセスしてresponseが帰ってくるか確認する

この記事が気に入ったらサポートをしてみませんか?