我有这个基于Golang的Dockerfile:
FROM golang:latest
RUN mkdir -p /app
WORKDIR /app
COPY bin/huru .
CMD ./huru
我检查了一下,huru二进制文件在工作目录中。我得到了这个错误:
/bin/sh: 1:./huru: Exec格式错误
有人知道这是怎么回事吗?"docker build“成功,但"docker run”失败,并出现该错误。
发布于 2018-10-23 07:55:03
出现"Exec format error“的原因很简单,因为我将基于OSX/MacOS构建的二进制文件复制到Docker镜像中,并尝试在Linux容器中运行该二进制文件。这不管用。
下面是为我工作的Dockerfile:
FROM golang:latest
RUN mkdir -p /app
WORKDIR /app
COPY . .
ENV GOPATH /app
RUN go install huru
ENTRYPOINT /app/bin/huru
在我的主机fs上,我的项目结构是这样的:
$GOPATH/
src/
huru/
.dockerignore
Dockerfile
我运行:
docker build -t foo .
docker run foo
我的.dockerignore文件包含:
.vscode
bin
pkg
发布于 2019-09-21 08:38:15
您可以在MacOS中为目标架构构建应用程序(huru
),然后将其复制到docker映像中。要为目标架构构建,您必须使用以下格式的命令:env GOOS=linux GOARCH=amd64 go build -o application main.go
这有一个额外的优势,即拥有干净的dockerfile
和更小的镜像。
https://stackoverflow.com/questions/52939149
复制相似问题