使用Docker Compose一键创建并启动Fess和Elasticsearch容器
Fess是什么意思?
公式网站:http://fess.codelibs.org/ja/
Fess 是一个用 Java 构建的全文搜索服务器。它在 Github 上以 Apache 许可证公开,可以进行网站和文件系统的爬取,并简易地引入类似于 Google 搜索引擎的功能。
此外,通过图形界面操作可以轻松进行设置和管理。
这次我们将使用 Docker Compose 来协同启动 Fess 容器和 Elasticsearch 容器。
环境
Ubuntu 16.10 – Ubuntu 16.10
java version “1.8.0_111” – Java 版本 “1.8.0_111”
Fess 10.2.3 – Fess 10.2.3
Elasticsearch 2.3.5 – Elasticsearch 2.3.5
顺序
由于Fess的官方存储库中发布了Compose文件,所以我们将直接使用它来尝试。
$ git clone git@github.com:codelibs/docker-fess.git
Cloning into 'docker-fess'...
remote: Counting objects: 116, done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 116 (delta 5), reused 0 (delta 0), pack-reused 95
Receiving objects: 100% (116/116), 18.00 KiB | 0 bytes/s, done.
Resolving deltas: 100% (37/37), done.
$ cd ./docker-fess/compose
$ docker-compose up -d
~中略~
Creating compose_elasticsearch_1
Creating compose_fess_1
第一次创建容器可能需要一些时间,但似乎已经成功启动了。让我们确认一下。
$ docker ps
12ee47c27373 compose_fess "/docker-entrypoint.s" About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp compose_fess_1
c3d18d223903 compose_elasticsearch "/docker-entrypoint.s" About a minute ago Up About a minute 9200/tcp, 9300/tcp compose_elasticsearch_1
$ curl localhost:8080 -I
HTTP/1.1 200
Set-Cookie: JSESSIONID=F3C021989F8EF3DD4340DE872AE168A6;path=/;HttpOnly
Pragma: no-cache
Cache-Control: no-cache, no-store
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Date: Fri, 02 Dec 2016 06:54:32 GMT
看起来可以正确访问。
但是Elasticsearch不会被外部公开,因此无法从主机操作系统进行访问。
为了避免可能的不便,我们将尝试添加端口转发设置。
Compose文件的格式在官方参考资料中详细介绍,并且已经翻译成日语,非常易懂。
根据进一步阅读,似乎只需编辑ports部分,让我们马上来修改Compose文件。
version: '2'
services:
fess:
build: ./fess
ports:
- "8080:8080"
depends_on:
- elasticsearch
environment:
- ES_HTTP_URL=http://compose_elasticsearch_1:9200
- ES_TRANSPORT_URL=compose_elasticsearch_1:9300
- FESS_DICTIONARY_PATH=/usr/share/elasticsearch/config/
elasticsearch:
build: ./elasticsearch
ports:
- "9200:9200"
- "9300:9300"
我们在最后添加三行,然后重新启动试试看。
$ docker-compose restart
Restarting compose_fess_1 ... done
Restarting compose_elasticsearch_1 ... done
$ docker ps
2ec1784e9f32 compose_fess "/docker-entrypoint.s" About a minute ago Up 32 seconds 0.0.0.0:8080->8080/tcp compose_fess_1
e87eb4194bdf compose_elasticsearch "/docker-entrypoint.s" About a minute ago Up 32 seconds 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp compose_elasticsearch_1
$ curl localhost:9200
{
"name" : "Man-Wolf",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.3.5",
"build_hash" : "90f439ff60a3c0f497f91663701e64ccd01edbb4",
"build_timestamp" : "2016-07-27T10:36:52Z",
"build_snapshot" : false,
"lucene_version" : "5.5.0"
},
"tagline" : "You Know, for Search"
}
事情顺利进行。
总结
我尝试将Fess和Elasticsearch合并到官方分发的Compose文件中,这样可以减少大部分的构建工作,很方便使用。