2022年4月、「Docker Compose V2(以下、Compose V2)」の正式リリースのアナウンスがされました。 Fessでは、今まで「docker-composeコマンド」を利用していましたが、リリースに合わせてCompose V2に対応した「docker composeコマンド」へ移行しています。今回は、Compose V2に対応したFessの起動方法を紹介します。

Docker Desktop のインストール

最新の「Docker Desktop」であれば、Compose V2のdocker composeコマンドを利用することができます。 インストーラーのダウンロードは Docker Desktop の公式ページから取得可能です。OSごとにダウンロードするファイルや手順に違いがあるので、詳細はDocker の公式サイトにあるガイド「Get Docker」を参照してください。インストール後はDocker Desktopを起動しておきます。

vm.max_map_count の設定

ElasticsearchをDockerコンテナとして実行できるようにするため、ホスト側で「vm.max_map_count」の値を調整します。各環境での設定方法についてはElasticsearchのページにある「vm.max_map_count to at least 262144」の説明 も参照してください。

Docker Desktop をインストールした場合は、コマンドラインで以下を実行します。

docker-machine ssh

sudo sysctl -w vm.max_map_count =262144

WSL 2 で Docker Desktop を利用する場合は以下になります。

wsl -d docker-desktop

sysctl -w vm.max_map_count =262144

Fess のセットアップ

Fessでは、Compose V2用のYAMLファイルを提供しています。 必要なYAMLファイルをダウンロードして、docker composeコマンド を実行するだけで、簡単に Fess を起動できます。

Fessは検索エンジンとして、ElasticsearchまたはOpenSearchを利用できます。 OpenSearchでの利用方法は前回(https://news.mynavi.jp/techplus/article/_ossfess-44/)紹介していますが、Fess 14.2では以下をサポートしているので、今回はそれぞれでの起動方法をまとめて紹介します。

  • Elasticsearch 7 または 8
  • OpenSearch 1 または 2

Fessの起動

compose.yamlなど必要なファイルをダウンロードして、docker composeコマンドを実行してください。


◆Elasticsearch 7 を利用する場合
compose.yaml
compose-elasticsearch7.yaml

$ docker compose -f compose.yaml -f compose-elasticsearch7.yaml up -d


◆Elasticsearch 8 を利用する場合
compose.yaml
compose-elasticsearch8.yaml

$ docker compose -f compose.yaml -f compose-elasticsearch8.yaml up -d


◆OpenSearch 1 を利用する場合
.env.opensearch
compose.yaml
compose-opensearch1.yaml

$ docker compose --env-file .env.opensearch -f compose.yaml -f compose-opensearch1.yaml up -d


◆OpenSearch 2 を利用する場合
.env.opensearch
compose.yaml
compose-opensearch2.yaml

$ docker compose --env-file .env.opensearch -f compose.yaml -f compose-opensearch2.yaml up -d

実行後、以下のようにdocker psコマンドを実行すると、コンテナの状態を確認することができます。

$ docker ps
CONTAINER ID   IMAGE                                       COMMAND                  CREATED         STATUS         PORTS                              NAMES
8535c743ff9c   ghcr.io/codelibs/fess:14.2.0                "/bin/sh -c /usr/sha…"   3 minutes ago   Up 3 minutes   0.0.0.0:8080->8080/tcp             fess01
b97590ece27c   ghcr.io/codelibs/fess-elasticsearch:8.2.2   "/bin/tini -- /usr/l…"   3 minutes ago   Up 3 minutes   0.0.0.0:9200->9200/tcp, 9300/tcp   es01

コンテナの起動後、http://localhost:8080/ にアクセスして、Fess の検索画面が表示できることを確認してください。最新のcompose.yamlなどは、Githubにあるdocker-fessプロジェクトを参照してください。

YAMLファイルの設定内容

Fessのコンテナ設定をcompose.yamlで指定して、もう一つの「compose-*.yaml」で検索エンジンのコンテナを指定しています。 この2つのYAMLファイルを-fオプションで指定することで、Fessと検索エンジンのコンテナがそれぞれ起動して、Fessが検索エンジンにアクセスできる状態になります。

compose.yamlでは、Fessのバージョン、検索エンジンへのアクセス先の設定や公開するポート番号などを設定しています。検索エンジンのコンテナの設定は、例えば、compose-elasticsearch8.yamlであれば、Elasticsearchのバージョンおよび必要な設定情報が記述されています。インデックスや辞書ファイルのデータは、localボリュームに保存して永続化していますが、設定を変えることで、ホスト側のディレクトリに保存することも可能です。「esdata01」がインデックスのデータの保存先のボリュームで、「esdictionary01」が辞書ファイルの保存先になります。

Elasticsearchをクラスタ構成にしたい場合は、es01サービスの内容を参考にして、サービスおよびボリュームの設定をes02のように複製して追記することでクラスタ構成にすることもできます。

Fessの停止

起動したコマンドのup -dをdownに置き換えて実行することで、コンテナ群を停止することができます。 Elasticsearch 8を起動した場合は以下のようになります。

$ docker compose -f compose.yaml -f compose-elasticsearch8.yaml down

* * *

今回は、Docker Desktopのdocker composeコマンドを利用して、ElasticsearchまたはOpenSearchとの組み合わせでFessを起動する手順を紹介しました。 YAMLファイルを用意するだけで、Fessをさまざまな組み合わせで簡単に起動することができます。Fessでは、ElasticsearchとOpenSearchの違いをバージョン含めて吸収しているので、Fessを利用する上では差分に気づくことはないと思います。ご利用の環境に合わせたプロダクトとバージョンを選んで利用してみてください。