演習:Dockerを使用してLiferay とElasticsearchを実行する
7.3+
ここでは、ローカル マシン上での最小限の Liferay-Elasticsearch セットアップを順に確認し、Elasticsearch と Liferay 間の安全な REST クライアント 接続がどのように構成されているかを確認します。 この例では、Elasticsearch コンテナ 1 つと Liferay コンテナ 1 つの 2 つの Docker コンテナを使用します。 より概念的かつ実稼働に近い情報については、 Elasticsearch のインストールを参照してください。
Dockerコンテナにバインドマウントするためのローカルフォルダを作成する
プラグインと構成ファイルを提供するために、Elasticsearch および Liferay コンテナのシステム フォルダーにバインド マウントできるローカル フォルダーを作成します。 Elasticsearchはマウントされたフォルダに書き込む必要があるため、以下のmkdirコマンドには-m a+w修飾子をつけています。 システムに適用される適切な権限を理解して適用する必要があります。
mkdir -p test-es-install/dxp/files/osgi/configs && mkdir -p test-es-install/elasticsearch -m a+w && cd test-es-install
最後に cd test-es-install コマンドを実行すると、 test-es-install フォルダーに移動します。 Elasticsearch と Liferay の両方の残りのコマンドを必ずこのフォルダーから実行してください。
Elasticsearch をインストール
-
elasticsearchという名前の Elasticsearch コンテナを設定して起動します。docker run -it --name elasticsearch -m 1g -p 9200:9200 -e "discovery.type=single-node" -e "node.name=es-node1" -v $(pwd)/elasticsearch:/usr/share/elasticsearch/data docker.elastic.co/elasticsearch/elasticsearch:8.11.4起動すると、重要なセキュリティ情報を含むログ メッセージが出力されます。

-
elastic ユーザーのパスワードをローカルにコピーします。
-
キーストアのパスワードを取得します。 新しいターミナル ウィンドウを開き、新しいコンテナーで対話型シェルを開きます。
docker exec -it elasticsearch /bin/bash -
./bin/elasticsearch-keystoreを使用して、パスワードをコマンドラインに出力します。./bin/elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_passwordキーストアのパスワードをローカルにコピーします。
-
必要な Elasticsearch プラグインをインストールします。
./bin/elasticsearch-plugin install analysis-icu && /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji && /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-smartcn && /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-stempel -
プラグインがインストールされたら、
exitと入力してシェルを終了します。 -
Elasticsearchコンテナを再起動して、プラグインを登録します。 CTRL+C はコンテナを停止します。 実行して再起動してください
docker start -i elasticsearch -
最初の起動時に、Elasticsearch は Liferay との HTTP 接続を暗号化するために必要なセキュリティ証明書を作成しました。 実行中のコンテナから
certsフォルダをtest-es-install/dxp/files/フォルダにコピーします。docker cp elasticsearch:/usr/share/elasticsearch/config/certs/ dxp/files/ -
Docker はこれらを Liferay コンテナにコピーし、Liferay はこれらのファイルから読み取る必要があるため、ファイルの権限が適切であることを確認してください。
chmod -R a+rwx dxp/files/certs/これはローカルテスト専用です。 権限がシステムに適切であることを理解し、確認する必要があります。
-
Liferay の設定で参照できるように、
elasticsearchコンテナの IPv4 アドレスを取得します。docker network inspect bridgeIPv4 アドレスをローカルにコピーします。
Liferayをインストールする
Liferay が Elasticsearch に接続するために必要なプロパティを指定して、Liferay コンテナを実行します。
-
まず、Elasticsearch 7 構成ファイルを入力します。 ファイル
com.liferay.portal.search.elasticsearch7.configuration.ElasticsearchConfiguration.configを作成します:touch dxp/files/osgi/configs/com.liferay.portal.search.elasticsearch7.configuration.ElasticsearchConfiguration.config -
ファイルを開いて次の内容を指定します。
passwordとtruststorePasswordを Elasticsearch からコピーしたものに置き換え、elasticsearchコンテナーの IPv4 が異なる場合はnetworkHostAddressesプロパティに挿入します。password="[ELASTIC_PASS]" truststorePassword="[KEYSTORE_PASS]" networkHostAddresses="https://172.17.0.2:9200" authenticationEnabled=B"true" httpSSLEnabled=B"true" logExceptionsOnly="false" productionModeEnabled=B"true" truststorePath="/opt/liferay/certs/http.p12" truststoreType="pkcs12" username="elastic"ファイルを保存して終了します。
-
これで、セキュリティ証明書ファイルと構成ファイルが配置されました。 これらは、Liferay Dockerコンテナが読み取ることができるホストシステム上のフォルダに追加されています(
test-es-install/dxp/files)。 Liferay コンテナを起動します。docker run -it --memory 9g --name liferay --publish 8080:8080 --volume $(pwd)/dxp:/mnt/liferay liferay/portal:7.4.3.132-ga132Liferay 7.3 を使用している場合は、上記のコマンドのバージョンを置き換えてください。
-
チェックポイント: [コントロールパネル] → [設定] → [検索機能]でElasticsearch接続が有効になっていることを確認します。
![有効な接続が[検索機能]管理パネルに表示されます。](https://resources.learn.liferay.com/images/dxp/latest/en/search/installing-and-upgrading-a-search-engine/elasticsearch/exercise-run-liferay-and-elasticsearch-using-docker/images/01.png)
検索インデックスとスペルチェックインデックスを再作成します。 両方の再インデックス アクションは、[コントロール パネル] → [構成] → [検索] の [インデックス アクション] タブから実行されます。
演習ファイルのクリーンアップ
この演習で作成したすべてのアイテムをクリーンアップするには、まずコンテナを停止し、
-
Docker コンテナを削除します。
docker container rm elasticsearch liferay -
フォルダー構造を削除します。 まず、テストインストールフォルダの親(つまり、
../test-es-install)にいることを確認し、次に実行します。rm -fr test-es-install
これにより、コンテナの作成に使用した Docker イメージだけが残ります。 必要に応じて、 docker image rm [image-name] コマンドでそれらを削除できます。