ソフトウエアを本運用する際、Docker上で運用するケースも増えてきたと思います。FessもDockerで簡単に利用できるようにDockerイメージが配布されており、dockerコマンドを実行するだけでDocker上に簡単にFessを構築することができます。今回は、Docker上でのFessの利用方法について説明します。

Dockerとは

DockerはOSレベルの仮想化を利用してソフトウエアを「コンテナ」と呼ばれるパッケージで提供する製品群です。今回は、「docker」と「docker-compose」というコマンドを利用して説明するので、あらかじめ「Docker Desktop」をインストールしておいてください。

FessのDockerイメージは、「Docker Hub」で配布しています。インターネットに接続されている環境であれば、dockerコマンドの実行時などにDockerイメージを取得することができます。

事前設定

Fessは検索エンジンにElasticsearchを利用しているので、ElasticsearchがDockerコンテナとして実行できるようにする必要があります。それには、OS側で「vm.maxmapcount」の値を調整します。利用するOSによって設定方法が異なるので、それぞれの設定方法については「Set vm.max_map_count to at least 262144」を参照してください。

dockerコマンドでの起動

まずは、FessをDockerコンテナとして起動してみます。FessのDockerイメージは、「codelibs/fess:バージョン」で指定します。今回は、Fessの起動ログが確認できるようにするため、以下のコマンドで起動します。

$ docker run -it -p 8080:8080 codelibs/fess:13.8.0

起動完了後、「http://localhost:8080/」からFessにアクセスできます。

Fessのコンテナを停止させる場合は「docker stop CONTAINER」または「Ctrl」+「C」で停止してください。

docker-composeコマンドでの起動

FessをDockerコンテナとして本運用する場合、FessとElasticsearchのコンテナは分離していたほうが運用管理が楽になります。Fessでは、FessとElasticsearchのコンテナを別々に起動するDocker Compose用の環境も提供しています。

Docker Compose用の環境を取得して、docker-composeコマンドを実行して起動します。

$ git clone -b v13.8.0 https://github.com/codelibs/docker-fess.git
$ cd docker-fess/compose/
$ docker-compose -f docker-compose.yml -f docker-compose.standalone.yml up -d

起動完了後、「http://localhost:8080/」からFessにアクセスできます。

起動したコンテナの状態は「docker ps」で以下のように確認できます。

$ docker ps
CONTAINER ID        IMAGE                                   COMMAND                  CREATED              STATUS              PORTS                                        NAMES
570aa5d85d3c        codelibs/fess:13.8.1                    "/bin/sh -c /usr/sha..."   About a minute ago   Up About a minute   9200/tcp, 0.0.0.0:8080->8080/tcp, 9300/tcp   fess01
81d8a6b4d285        codelibs/fess-elasticsearch-oss:7.8.0   "/tini -- /usr/local..."   About a minute ago   Up About a minute   0.0.0.0:9200->9200/tcp, 9300/tcp             es01

Fessに関する設定は「docker-compose.yml」に、Elasticsearchの設定は「docker-compose.standalone.yml」に記述されています。例えば、ElasticsearchのJavaのヒープサイズを変更したい場合は、docker-compose.standalone.ymlの「ES_JAVA_OPTS=-Xms1g -Xmx1g」の箇所を修正します。

そのほか、インデックスの保存先を指定したいケースもあると思います。変更する場合は、docker-compose.standalone.ymlでボリュームの「esdata01」の箇所を変更して指定してください。

起動したコンテナを停止するには、以下のコマンドを実行します。

$ docker-compose -f docker-compose.yml -f docker-compose.standalone.yml down

* * *

今回はFessのDockerでの使い方を紹介しました。Docker Composeの構成を参考に構築すれば、本運用も可能なFess環境を構築することができます。また、最近ではAWSのECSでDocker Composeからのデプロイも容易になってきているので、Dockerを利用することで、クラウド上でのFessの構築や運用を容易に実現できるはずです。

著者紹介

菅谷 信介 (Shinsuke Sugaya)

Apache PredictionIOにて、コミッター兼PMCとして活動。また、自身でもCodeLibs Projectを立ち上げ、オープンソースの全文検索サーバFessなどの開発に従事。