我正在使用这个 docker 存储库来安装elasticsearch
和searchguard
searchguard 需要在 elasticsearchbin/init_sg.sh
完全加载后运行脚本。
我不喜欢docker exec -it elasticsearch bin/init_sg.sh
每次重新创建容器时手动运行。我正在寻找一种在Dockerfile
or中以编程方式执行此操作的方法docker-compose.yml
。
我现在的主要问题是在 dockerfile 中找到主进程 pid 并确保 elasticsearch 服务已完全加载。谁能给我建议如何做到这一点?
不成功的 Dockerfile
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