我有这个基于Golang的Dockerfile:
person
我检查了一下,并且huru二进制文件在工作目录中。我收到此错误:
/ bin / sh:1:./huru:执行格式错误
有人知道那是什么吗? “ docker build”成功,但“ docker run”失败,并显示该错误。
答案 0 :(得分:0)
“ Exec格式错误”仅是因为我将基于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
答案 1 :(得分:0)
您可以在MacOS中为目标体系结构构建应用程序(huru
),然后将其复制到docker映像中。要针对目标体系结构进行构建,您必须使用以下格式的命令:
env GOOS=linux GOARCH=amd64 go build -o application main.go
这样做还有一个好处,就是拥有清晰的dockerfile
和较小的图像。