我尝试创建一个基于 alpine 的 docker 镜像,但是每当我尝试运行它时,我都会收到以下错误消息:standard_init_linux.go:219: exec user process caused: exec format error。
这是仅运行可执行文件的基本 Dockerfile:
FROM alpine:3.13.5
WORKDIR /usr/local/bin
COPY profiles-svc /usr/local/bin
EXPOSE 20002/tcp
ENTRYPOINT ["/usr/local/bin/profiles-svc"]
Run Code Online (Sandbox Code Playgroud)
这profiles-svc是由命令生成的可执行文件go build。
我在我的 ubuntu 笔记本电脑上没有注意到这个问题,只发生在 Macbook M1 上。
先谢谢您的帮助!
问题是有两种不同的架构。如果您go build在 M1 上使用命令,它将是arm64,因此如果您尝试在 docker 上使用 alpine 映像执行该命令,它将失败。要解决该问题,您需要构建amd64基于二进制文件。这是命令:CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o out-amd64。现在您可以将该二进制文件复制到基于 Linux 的 dockerfile、构建并运行。
| 归档时间: |
|
| 查看次数: |
5866 次 |
| 最近记录: |