ソフトウエアを本運用する際、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などの開発に従事。