Ale*_*lls 7 shell sh docker dockerfile
我有这个基于 Golang 的 Dockerfile:
FROM golang:latest
RUN mkdir -p /app
WORKDIR /app
COPY bin/huru .
CMD ./huru
Run Code Online (Sandbox Code Playgroud)
我检查了一下,huru 二进制文件位于工作目录中。我收到此错误:
/bin/sh: 1: ./huru: 执行格式错误
有人知道那是什么吗?“docker build”成功,但“docker run”失败并出现该错误。
“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
Run Code Online (Sandbox Code Playgroud)
我的项目结构在我的主机 fs 上如下所示:
$GOPATH/
src/
huru/
.dockerignore
Dockerfile
Run Code Online (Sandbox Code Playgroud)
我跑:
docker build -t foo .
docker run foo
Run Code Online (Sandbox Code Playgroud)
我的 .dockerignore 文件包含:
.vscode
bin
pkg
Run Code Online (Sandbox Code Playgroud)
如果您想在 Macos 上运行 docker 镜像,那么只需指定目标操作系统就足够了:
假设有src和bin文件夹,在src文件夹中执行:
env GOOS=linux go build -o ../bin
Run Code Online (Sandbox Code Playgroud)
(这适用于m1,使用arm64架构)
顺便说一句,我不会使用最新的,我看到有一个基于 1.20 的 docker 镜像在撰写本文时尚未正式发布。
| 归档时间: |
|
| 查看次数: |
17321 次 |
| 最近记录: |