为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的 Go 应用程序会因 Docker 容器内的“没有这样的文件或目录”而失败?

为什么我的 Go 应用程序会因 Docker 容器内的“没有这样的文件或目录”而失败?

Go
蝴蝶不菲 2022-12-26 15:35:54
我有一个 Go 1.18 应用程序,它在我的 WSL2 Ubuntu 中运行没有问题,但无法在 Docker 容器中运行并显示错误消息exec /app: no such file or directory。我的 Dockerfile(稍微改编自另一个没有问题的 Go 1.12 应用程序)是:FROM golang:1.18-alpine AS buildWORKDIR /appCOPY go.mod ./COPY go.sum ./RUN go mod downloadCOPY source/*.go ./RUN go build -o /appFROM gcr.io/distroless/static-debian11COPY --from=build /app /appUSER nonroot:nonrootCMD ["/app"]构建它没有显示错误。我尝试添加GOOS=linux和GOARCH=amd64构建,--platform linux/amd64但没有任何区别(我认为应该没有必要?)。我从 Distroless 切换到 Debian,同样的问题。该文件/app存在 (11 mb, 755)。file /app给出这个输出:app: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-x86_64.so.1, Go BuildID=UsV_orwX-S3Rwh16P1VH/6u2iHufDhnUYUkHBp0rE/2xn48wuW047ZRbQ7qPIy/ihQgooFxjsMgMzYGE-8h, not stripped我不知道我哪里出错了。这里的问题是什么?
查看完整描述

1 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

似乎是由使用go-ping/ping引起的。将构建镜像切换到golang:1.18(不是 Alpine)和最终镜像来gcr.io/distroless/base-debian11解决这个问题。



查看完整回答
反对 回复 2022-12-26
  • 1 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号