演習:Dockerを使用してLiferay とElasticsearchを実行する
Liferay DXP 7.3+
ここでは、ローカル マシン上で最小限の Liferay-Elasticsearch セットアップを順に見ていき、Elasticsearch と Liferay 間の安全な REST クライアント 接続がどのように構成されるかを確認できます。 この例では、ElasticsearchコンテナとLiferayコンテナの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の設定ファイルにデータを入力します。 お使いのバージョンに適したファイル(例えば
、com.liferay.portal.search.elasticsearch8.configuration.ElasticsearchConfiguration.config)を作成します:touch dxp/files/osgi/configs/com.liferay.portal.search.elasticsearch8.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] コマンドでそれらを削除できます。