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

Docker运行prometheus-vmware-exporter报$PATH无对应可执行文件错误

问题原因

报错提示executable file not found in $PATH,直接原因是容器启动时找不到ENTRYPOINT指定的prometheus-vmware-exporter可执行文件,对应你给出的Dockerfile,有3个常见触发点:

  • builder阶段执行go build时没有显式指定输出二进制名,部分Go版本/模块配置下,默认生成的二进制文件名和预期不符,导致后续COPY步骤实际没有把二进制拷到最终镜像里
  • COPY到alpine镜像的二进制文件没有可执行权限,哪怕文件存在也会被判定为找不到可执行文件
  • 原Dockerfile里go get -d -v的依赖拉取方式在Go modules模式下兼容性差,很可能依赖拉取失败导致编译步骤根本没生成二进制文件
可直接使用的修复版Dockerfile
FROM golang:1.15 as builder
WORKDIR /src/github.com/devinotelecom/prometheus-vmware-exporter
COPY ./ .
# 优先用go mod下载依赖,兼容性更好
RUN go mod download
# 显式指定输出二进制文件名,固定编译参数保证alpine兼容性
RUN CGO_ENABLED=0 GOOS=linux go build -o prometheus-vmware-exporter .

FROM alpine:3.8
# 拷贝时直接赋予可执行权限,放到PATH默认包含的/usr/local/bin目录
COPY --from=builder --chmod=755 /src/github.com/devinotelecom/prometheus-vmware-exporter/prometheus-vmware-exporter /usr/local/bin/prometheus-vmware-exporter
EXPOSE 9512
ENTRYPOINT ["prometheus-vmware-exporter"]
验证流程

按顺序执行以下命令排查确认:

  1. 重新构建镜像,注意观察编译阶段的日志有没有报错:
    docker build -t prometheus-vmware-exporter .
  2. 构建完成后先验证二进制是否正常存在于镜像中,跳过默认ENTRYPOINT执行ls命令查看文件:
    docker run --rm --entrypoint ls prometheus-vmware-exporter -l /usr/local/bin/prometheus-vmware-exporter
    正常会输出类似-rwxr-xr-x 1 root root 123456 Jan 1 00:00 /usr/local/bin/prometheus-vmware-exporter的结果,如果提示No such file or directory说明编译或拷贝步骤失败
  3. 确认文件存在后正常启动容器即可:
    docker run -d -p 9512:9512 prometheus-vmware-exporter
其他注意事项
  • 如果你的项目根目录下没有go.mod文件,先在本地项目目录执行go mod init github.com/devinotelecom/prometheus-vmware-exporter生成模块配置文件,否则依赖拉取步骤会失败
  • 不要使用你注释里写的拷贝到/home/gsquire/exporter/的路径,该路径不在系统默认PATH中,直接写文件名作为ENTRYPOINT会找不到文件,如果一定要放到自定义路径,ENTRYPOINT要写全路径,比如ENTRYPOINT ["/home/gsquire/exporter/prometheus-vmware-exporter"]

内容的提问来源于stack exchange,提问作者Alfiethecat99

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.04 16:15:42