Dockerfile执行dlv报错:exec /dlv: no such file or directory 求助
问题原因
你遇到的exec /dlv: no such file or directory错误,本质是C库不兼容:
- 构建阶段用的
golang:1.18-alpine基于musl libc,编译出的dlv二进制依赖这个轻量C库 - 最终运行镜像
debian:buster-slim用的是glibc,系统无法找到musl的依赖,导致明明文件存在却无法执行
修复方案
方案1:编译静态链接的dlv(推荐)
在builder阶段编译dlv时,强制生成不依赖系统C库的静态二进制,这样跨镜像也能运行:
修改builder里的dlv安装命令,加上CGO_ENABLED=0:
FROM golang:1.18-alpine AS builder # 编译静态链接的Delve RUN CGO_ENABLED=0 go install github.com/go-delve/delve/cmd/dlv@latest # 后续构建步骤不变...
方案2:改用同C库的builder镜像
把builder阶段的镜像换成debian-based的Go镜像,确保编译的dlv依赖glibc,和最终镜像兼容:
FROM golang:1.18-buster AS builder # 构建Delve RUN go install github.com/go-delve/delve/cmd/dlv@latest # 后续构建步骤不变...
额外修复点
你注释掉了fooapp的复制命令,导致/app/fooapp不存在,必须把这行恢复:
COPY --from=builder /app/fooapp /app/fooapp
内容的提问来源于stack exchange,提问作者Rajeshwar
相关产品推荐
相关产品推荐

