基于Logstash Docker镜像v6.1.2安装插件遇疑:缺失logstash-plugin.sh?
解决Logstash 6.1.2 OSS镜像插件安装问题
首先咱们来拆解下你遇到的核心问题:这个6.1.2版本的Logstash OSS镜像里,logstash-plugin是直接的可执行脚本,根本没有.sh后缀,再加上你之前的Dockerfile里路径和命令逻辑有几个小疏漏,才导致插件装不上。
问题根源梳理
- 目录路径错误:官方6.x版本的Logstash镜像,程序默认放在
/usr/share/logstash,不是你设置的/opt/logstash,这直接导致后续执行插件命令时找不到文件。 - 命令衔接问题:你的
RUN指令里,rm和插件安装命令之间没加&&,shell执行时会忽略前序命令的失败状态直接跑后面的,而且换行后的命令需要用&&来保证执行顺序和成功性。 - 插件命令认知偏差:这个版本里
logstash-plugin本身就是可执行文件,不需要找.sh后缀,直接调用就行。
修正后的Dockerfile
FROM docker.elastic.co/logstash/logstash-oss:6.1.2 # 修正Logstash主目录,匹配官方镜像的实际结构 ENV LOGSTASH_HOME /usr/share/logstash WORKDIR ${LOGSTASH_HOME} # 先清理默认配置,再安装插件,用&&确保前一步成功才执行下一步 RUN rm -f /usr/share/logstash/pipeline/logstash.conf \ && bin/logstash-plugin install logstash-input-kafka \ && bin/logstash-plugin install logstash-filter-prune # 复制自定义的pipeline和配置文件 ADD pipeline/ /usr/share/logstash/pipeline/ ADD config/ /usr/share/logstash/config/
额外验证小技巧
如果你想确认镜像里的logstash-plugin位置,可以先启动临时容器查看:
docker run -it --rm docker.elastic.co/logstash/logstash-oss:6.1.2 /bin/bash # 进入容器后执行以下命令查看文件列表 ls /usr/share/logstash/bin/
你会看到logstash-plugin这个可执行文件,直接调用它就没问题。另外,如果是内网环境安装插件,记得提前配置代理或者准备好离线插件包哦。
内容的提问来源于stack exchange,提问作者Going Bananas
相关产品推荐
相关产品推荐

