Elasticsearch 6.0.0 の Docker イメージで X-Pack 不要なときのアレ(追記あり)

Elasticsearch 6.0.0 がリリースされていました。

Elastic 社の Docker レジストリにも 6.0.0 のイメージが来ていたのでさっそくお試し。

analysis-kuromoji が使いたいのと X-Pack は不要なので、おもむろに下記のような Dockerfile でビルド。

FROM docker.elastic.co/elasticsearch/elasticsearch:6.0.0
RUN elasticsearch-plugin install analysis-kuromoji
RUN elasticsearch-plugin remove x-pack

Elasticsearch 5.6.x のイメージではこれで問題なかったのですが、 6.0.0 のイメージでは以下のようなエラーで Elasticsearch が起動しません。

[2017-11-15T10:41:35,496][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: unknown setting [xpack.license.self_generated.type] please check that any required plugins are installed, or check the breaking changes documentation for removed settings
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:134) ~[elasticsearch-6.0.0.jar:6.0.0]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:121) ~[elasticsearch-6.0.0.jar:6.0.0]
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:69) ~[elasticsearch-6.0.0.jar:6.0.0]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:134) ~[elasticsearch-6.0.0.jar:6.0.0]
        at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-6.0.0.jar:6.0.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.0.0.jar:6.0.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.0.0.jar:6.0.0]

6.0.0 のイメージに含まれる elasticsearch.ymlxpack.license.self_generated.type という X-Pack の設定が入ったようです。

これを回避するには、 Dockerfile に以下のような行を加えて、 X-Pack 関連の設定を含まない elasticsearch.yml で上書きしてビルドしてしまうか...

COPY --chown=elasticsearch:elasticsearch elasticsearch.yml /usr/share/elasticsearch/config/

もしくは、 X-Pack はアンインストールせず、 docker run 時に -e "xpack.security.enabled=false" のような感じで、 X-Pack の不要な機能をオフにするのが良さそう。設定で X-Pack の機能をオフにする方法で、 X-Pack の試用期間である30日経過した場合の挙動は謎(未検証)。

ここから追記

Elastic の中の人からツッコミがありまして、 6.0.0 から X-Pack がインストールされていない oss というフレーバのイメージが追加されたとのことでした。 docker.elastic.co/elasticsearch/elasticsearch-oss:6.0.0 という名前で使えるようです。 Docker レジストリのページには現時点では記載がないですが、レジストリのページにも載ってました...)ドキュメントにしっかり書いてありましたね...

www.elastic.co

X-Pack 不要な場合は最初からこれを使えば良いですね。 Elastic 社最高!