gpt4 book ai didi

docker - Docker容器启动后如何自动运行脚本

转载 作者:行者123 更新时间:2023-11-29 02:51:03 27 4
gpt4 key购买 nike

我正在使用 Search Guard 插件来保护由多个节点组成的 Elasticsearch 集群。这是我的 Dockerfile:

#!/bin/sh
FROM docker.elastic.co/elasticsearch/elasticsearch:5.6.3

USER root

# Install search guard
RUN bin/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 \
bin/init_sg.sh \
&& chown -R elasticsearch:elasticsearch /usr/share/elasticsearch

USER elasticsearch

初始化 SearchGuard(创建内部用户和分配角色)。我需要在容器启动后运行脚本 init_sg.sh。问题是:除非 elasticsearch 正在运行,否则脚本不会初始化任何安全索引。

脚本的内容是:

sleep 10
plugins/search-guard-5/tools/sgadmin.sh -cd config/ -ts config/truststore.jks -ks config/kirk-keystore.jks -nhnv -icl

现在,我只是在容器启动后手动运行脚本,但因为我是在 Kubernetes 上运行它。Pod 可能会被杀死或失败,并由于某种原因自动重新创建。在这种情况下,插件必须在容器启动后自动初始化!

那么如何实现呢?非常感谢任何帮助或提示。

最佳答案

图像本身有一个入口点 ENTRYPOINT ["/run/entrypoint.sh"] 在 Dockerfile 中指定。您可以将其替换为您自己的脚本。因此,例如创建一个新脚本,安装它并首先调用 /run/entrypoint.sh 然后在运行 init_sg.sh 之前等待 elasticsearch 启动。

关于docker - Docker容器启动后如何自动运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47671589/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com