使用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文件中,这样可以减少大部分的构建工作,很方便使用。

广告
将在 10 秒后关闭
bannerAds