You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Docker Logstash镜像的容器无法创建自定义文件夹及复制Ruby脚本问题

解决Logstash容器中Ruby脚本复制失败的问题

让我来帮你排查下这个问题,大概率是COPY命令的路径匹配出了问题,结合你的描述和Dockerfile内容,我整理了几个关键点和修复方案:

1. 修正COPY命令的源路径

你提到Ruby脚本是直接放在Dockerfile的同一目录下,但你的Dockerfile里写的是COPY ./scripts/*.rb scripts——这会让Docker去寻找本地scripts子文件夹里的.rb文件,而你的脚本根本不在这个子文件夹里,自然复制失败!

把COPY命令改成这样:

COPY *.rb scripts/

这样Docker就会从Dockerfile所在的当前目录(.)里抓取所有.rb文件,复制到容器内WORKDIR(/usr/share/logstash)下的scripts文件夹里。

2. 可选:简化目录创建步骤

其实COPY命令如果目标目录不存在,会自动帮你创建,所以你原来的RUN mkdir scripts可以省略,当然保留也没问题,不会有冲突。

3. 排查其他可能的原因

  • 确认构建命令的执行目录:你必须在Dockerfile所在的目录下执行docker build命令,否则COPY的相对路径会出错。比如你的Dockerfile在/home/user/my-logstash,就先cd到这个目录再构建。
  • 检查.dockerignore文件:如果你的目录下有.dockerignore文件,看看里面是不是写了*.rb或者scripts相关的规则,这会阻止Docker复制这些文件。如果有的话,把对应的规则删掉。

修复后的完整Dockerfile示例

FROM docker.elastic.co/logstash/logstash:${ELK_VERSION}
USER root
WORKDIR /usr/share/logstash
# RUN mkdir scripts  # 可选,因为COPY会自动创建目标目录
COPY *.rb scripts/

构建完成后,进入容器执行ls /usr/share/logstash/scripts,应该就能看到你的Ruby脚本了。

内容的提问来源于stack exchange,提问作者Djellal Mohamed Aniss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 10:44:10