首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在完全加载docker容器中的主服务后运行bash脚本

在完全加载docker容器中的主服务后运行bash脚本
EN

Stack Overflow用户
提问于 2017-11-19 08:09:15
回答 1查看 1.4K关注 0票数 3

我正在使用这个码头仓库安装elasticsearchsearchguard

搜索保护程序需要在完全加载elasticsearch之后运行脚本bin/init_sg.sh

我不喜欢每次重新创建容器时手动运行docker exec -it elasticsearch bin/init_sg.sh。我正在寻找一种在Dockerfiledocker-compose.yml中以编程方式实现它的方法。

我现在的主要问题是在dockerfile中找到主进程pid,并确保完全加载elasticsearch服务。有人能给我怎么做的建议吗?

不成功Dockerfile

代码语言:javascript
复制
FROM docker.elastic.co/elasticsearch/elasticsearch:5.6.3

COPY config/ config/
COPY bin/ bin/

# Search Guard plugin
# https://github.com/floragunncom/search-guard/wiki
RUN elasticsearch-plugin install --batch com.floragunn:search-guard-5:5.6.3-16 \
    && chmod +x \
        plugins/search-guard-5/tools/hash.sh \
        plugins/search-guard-5/tools/sgadmin.sh

# Add your elasticsearch plugins setup here
# Example: RUN elasticsearch-plugin install analysis-icu

CMD bin/elasticsearch && while [ -d /proc/1 ] ; do sleep 1; done && bin/init_sg.sh
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-19 08:46:52

检查这个过程似乎不是一个检查弹性搜索是否准备好的好方法。

我建议使用弹性搜索的REST更好的选择。

api是在端口9200上公开的。有一个弹性搜索的官方健康检查脚本。健康检查使用命令curl -fsSL "http://$host:9200/_cat/health?h=status,如果弹性搜索是健康的,它将返回绿色。

您可以使用相同的api,等待绿色状态,然后执行init_sg.sh脚本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47374853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档