在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中不需要的卷 – 座敷牢日志)。
除此之外,还可以直接挂载主机操作系统的目录来实现数据的持久化,或者创建一个叫做数据卷容器的容器来存储数据,但是命名数据卷是最简单易操作的选择。请随便试试看。