我们正在使用Elastic的Logstash Docker映像(docker.elastic.co/logstash/logstash-oss:6.1.2
)作为我们自己的Logstash Docker映像构建的基础,我们需要在其中包含一些logstash插件以满足我们自己的需求。但是,当我们查看/opt/logstash/bin
下的基本图像时,我们可以看到有logstash-plugin.bat
个文件,但没有logstash-plugin.sh
个文件。这个文件丢失了还是我们正在查看安装图像的错误命令?
这是我们的Dockerfile,目前在构建时无法将给定的插件包含到新图像中:
FROM docker.elastic.co/logstash/logstash-oss:6.1.2
ENV LOGSTASH_HOME /opt/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
ADD pipeline/ /usr/share/logstash/pipeline/
ADD config/ /usr/share/logstash/config/
我们应该如何安装基于Elastic的Logstash Docker镜像v6.1.2的logstash插件?
答案 0 :(得分:3)
问题在于Dockerfile本身在RUN命令之间缺少int a = 3;
a += 1; // a = 4
a >>= 2; // a = 1
a--; // a = 0
int c = !(..., !a); // c = !(!a) = !(!0) = 0
,因此从文件夹中删除logstash-plugin而不是执行它来安装插件。
正确的Dockerfile:
&&