栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Docker构建期间添加Elasticsearch索引

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Docker构建期间添加Elasticsearch索引

我有类似的问题。

我想创建一个预加载数据的docker容器(通过回购中的一些脚本和json文件)。elasticsearch内部的数据在执行期间不会改变,我想要尽可能少的构建步骤(仅理想情况下

docker-compose up -d
)。

一种选择是手动执行一次,然后将elasticsearch
data文件夹(带有docker卷)存储在存储库中。但是,那时我将拥有重复的数据,并且每次数据更改时都必须手动检入新版本的数据文件夹。

解决方案

  1. 使Elasticsearch将数据写入未在Elasticsearchs的官方dockerfile中声明为卷的文件夹中。

`RUN mkdir /data && chown -R elasticsearch:elasticsearch /data && echo
‘es.path.data: /data’ >> config/elasticsearch.yml && echo ‘path.data: /data’

config/elasticsearch.yml `

(需要使用正确的权限创建文件夹)

  1. 下载等待

ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/e1f115e4ca285c3c24e847c4dd4be955e0ed51c2/wait-for-it.sh /utils/wait-for-it.sh

该脚本将等待,直到Elasticsearch运行我们的插入命令。

  1. 将数据插入Elasticsearch

RUN /docker-entrypoint.sh elasticsearch -p /tmp/epid & /bin/bash /utils/wait-for-it.sh -t 0 localhost:9200 -- path/to/insert/script.sh; kill $(cat/tmp/epid) && wait $(cat /tmp/epid); exit 0;

该命令在构建过程中启动elasticsearch,插入数据并将其放入一个RUN命令中。容器保留了原来的位置,除了elasticsearch的data文件夹已经正确初始化。

摘要

FROM elasticsearchRUN mkdir /data && chown -R elasticsearch:elasticsearch /data && echo 'es.path.data: /data' >> config/elasticsearch.yml && echo 'path.data: /data' >> config/elasticsearch.ymlADD https://raw.githubusercontent.com/vishnubob/wait-for-it/e1f115e4ca285c3c24e847c4dd4be955e0ed51c2/wait-for-it.sh /utils/wait-for-it.sh# Copy the files you may need and your insert scriptRUN /docker-entrypoint.sh elasticsearch -p /tmp/epid & /bin/bash /utils/wait-for-it.sh -t 0 localhost:9200 -- path/to/insert/script.sh; kill $(cat /tmp/epid) && wait $(cat /tmp/epid); exit 0;

就是这样!运行此映像时,数据库将预加载数据,索引等。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/371226.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号