在Docker上将Elasticsearch的数据保存在命名数据卷中,并通过Fess进行使用

这篇文章是Fess Advent Calendar 2016活动的第24天的文章。
←上一篇文章 下一篇文章→

我想使用Docker的Named Data Volume功能来将Elasticsearch的数据保存到Named Data Volume中,这是一种将数据持久化的方法。

被称为数据卷的是

使用容器进行数据管理- Docker-docs-ja 1.9.0b 文档
根据此处所述,为了保存数据,将在主机操作系统上创建一片被称为命名卷的区域,并对其进行命名和管理。
这里不详细描述,但以下链接非常清晰明了地整理了Docker的数据卷。

那么,让我们尝试将Elasticsearch的数据存储到Named Data Volume中。

环境

Ubuntu 16.10
java 版本 “1.8.0_111”
Fess 版本 10.2.3
Elasticsearch 版本 2.3.5
Docker 版本 1.12.3, 构建号 6b644ec

Docker 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
    volumes:
      - esdata:/usr/share/elasticsearch/data
      - esconfig:/usr/share/elasticsearch/config
volumes:
  esdata:
    driver: local
  esconfig:
    driver: local

Elasticsearch的Docker文件

FROM elasticsearch:2.3.5

RUN /usr/share/elasticsearch/bin/plugin install org.codelibs/elasticsearch-analysis-fess/2.3.0 && \
    /usr/share/elasticsearch/bin/plugin install org.codelibs/elasticsearch-analysis-ja/2.3.0 && \
    /usr/share/elasticsearch/bin/plugin install org.codelibs/elasticsearch-analysis-synonym/2.3.0 && \
    /usr/share/elasticsearch/bin/plugin install org.codelibs/elasticsearch-configsync/2.3.1 && \
    /usr/share/elasticsearch/bin/plugin install org.codelibs/elasticsearch-dataformat/2.3.0 && \
    /usr/share/elasticsearch/bin/plugin install org.codelibs/elasticsearch-langfield/2.3.0 && \
    /usr/share/elasticsearch/bin/plugin install http://maven.codelibs.org/archive/elasticsearch/plugin/kopf/elasticsearch-kopf-2.0.1.0.zip && \
    /usr/share/elasticsearch/bin/plugin install org.codelibs/elasticsearch-analysis-kuromoji-neologd/2.3.1

RUN (echo "configsync.config_path: /usr/share/elasticsearch/config"; \
    echo "script.engine.groovy.inline.update: on") | \
    tee -a /usr/share/elasticsearch/config/elasticsearch.yml 

EXPOSE 9200 9300

ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["elasticsearch"]

他可以保持原状就可以了。

结局

在这里,我们使用命令”$ docker-compose up -d –build”进行启动后,试着从网页爬取设置中添加一些适当的爬虫配置。

$ docker-compose stop
$ docker rm `docker ps -a -q`
$ docker-compose up -d --build

重新启动后,尽管Elasticsearch容器被删除,但爬虫的配置仍然恢复了!
也就是说,成功地创建了不会被删除的数据,非常方便。
要检查以前创建的实际卷,请使用$ docker volume ls进行确认。
使用Docker时,由于不断创建了不需要的卷,所以定期通过$ docker volume ls -f “dangling=true” -q | xargs docker volume rm进行删除(参考:删除Docker中不需要的卷 – 座敷牢日志)。

除此之外,还可以直接挂载主机操作系统的目录来实现数据的持久化,或者创建一个叫做数据卷容器的容器来存储数据,但是命名数据卷是最简单易操作的选择。请随便试试看。

广告
将在 10 秒后关闭
bannerAds