多くの場合、Elasticsearch イメージをカスタマイズしたいと考えています。たとえば、いくつかの追加のプラグインをインストールする必要があります。または、Elasticsearch にシノニム ファイルとカスタム構成が必要な場合は? または、対応する構成などが必要です。各 docker デプロイメントで上記の手順を繰り返したいのですが、どのようにすればよいでしょうか? すべての詳細を備えた作品を見つけるのは少し難しいかもしれません. これを念頭に置いて、Docker コンテナーのより詳細なカスタム構成を投稿することにしました。
必須
- Docker はすでにシステムにインストールされています
- ドッカーにログイン
- ファイルを作成および編集するための Visual Studio Code または任意のエディター
Dockerfile の作成
- Elasticsearch のインストールをカスタマイズするために必要なすべての手順をセットアップする、拡張子なしの Dockerfile という名前の新しいファイルを作成します。
- 使用するバージョンを決定します。たとえば、8.7.0 を使用します。
- 最初の行は次のようになります。
From docker.elastic.co/elasticsearch/elasticsearch:8.7.0 as elasticsearch
- synonyms ファイルを追加します。 synonyms_path は、Dockerfile があるフォルダーと同じフォルダーにある synonyms ファイルを含むホスト内のフォルダーへのパスである必要があります。
ADD ./{synonyms_path}/ /usr/share/elasticsearch/config/
VOLUME ["/usr/share/elasticsearch/config/"]
- 構成の追加 - config_path は、Dockerfile があるフォルダーと同じフォルダーにある構成ファイルを含む、ホスト内のフォルダーのパスである必要があります。
ADD ./{config_path}/ /usr/share/elasticsearch/config/
VOLUME ["/usr/share/elasticsearch/config/"]
- プラグインの追加 - plugins_path は、Dockerfile があるフォルダーと同じフォルダーにあるプラグインを含む、ホスト内のフォルダーへのパスである必要があります。
ADD ./{plugins_path}/ /usr/share/elasticsearch/plugins/
VOLUME ["/usr/share/elasticsearch/plugins/"]
注: すべてのプラグインは、使用している同じバージョンの Elasticsearch 用に構築する必要があります: 8.7.0
- Elasticsearch ポートを公開します。
EXPOSE 9200
次のような Dockerfile が必要です。
Dockerfile
From docker.elastic.co/elasticsearch/elasticsearch:8.7.0 as elasticsearch
ADD ./{synonyms_path}/ /usr/share/elasticsearch/config/
VOLUME ["/usr/share/elasticsearch/config/"]
ADD ./{config_path}/ /usr/share/elasticsearch/config/
VOLUME ["/usr/share/elasticsearch/config/"]
ADD ./{plugins_path}/ /usr/share/elasticsearch/plugins/
VOLUME ["/usr/share/elasticsearch/plugins/"]
EXPOSE 9200
2 つのオプションがあります。docker 構成ファイルを作成するか、次のコマンドを実行してイメージをビルドします。
docker build . -f Dockerfile -t elasticsearch
次のコマンドでコンテナを起動します。
docker run -p 9200:9200 elasticsearch
docker compose を使用する場合は、次のテキストを含む Dockerfile と同じフォルダーに docker-compose.yaml という新しいファイルを作成する必要があります。
docker-compse.yaml
version: "3.4"
networks:
internal-network:
driver: bridge
services:
elasticsearch:
image: elasticsearch
container_name: elasticsearch
networks:
- internal-network
build:
context: .
dockerfile: Dockerfile
target: elasticsearch
ports:
- 9200:9200
environment:
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
コンテナーを開始するには、docker-compose ファイルを含むフォルダーで次のコマンドを実行します。
docker compose up
これで、Elasticsearch がコンピューターのコンテナーで実行されます。
docker save コマンドを使用してこのイメージを保存し、docker load を使用して他のコンピューターにインストールすることもできます。