簡體   English   中英

無法使用新 Mac M1 構建 Docker 映像

[英]Unable to build Docker image using new Mac M1

我正在嘗試為我的應用程序構建一個 Docker 映像,以便在集成測試中使用。

該映像可以在我的 2017 年舊 Macbook 上正常構建,但在使用 M1 芯片的新 Macbook 上嘗試時失敗。

我收到的錯誤是:

unable to build image: 
The command '/bin/sh -c make build' returned a non-zero code: 2 
{"version": "TEST", "output": "Step 1/9 : FROM golang:1.15.3-alpine3.12 AS builder---> 9701aa6ab80a
Step 2/9 : RUN apk update && apk add gcc make git libc-dev ---> Using cache ---> 87ff8d250e2d 
Step 3/9 : ADD ./ /src/ ---> Using cache ---> ef95bb030ff7
Step 4/9 : WORKDIR /src/ ---> Using cache\n ---> 3b982c9ab004
Step 5/9 : RUN make build ---> Running in f7596e65a80b\u001b[91m# github.com/qadre/huski.go\n/usr/local/go/pkg/tool/linux_arm64/link: running gcc failed: exit status 1 
collect2: fatal error: cannot find 'ld'\ncompilation terminated.\n\n\u001b[0m\u001b[91
mmake: *** [Makefile:8: build] Error 2\n\u001b[0mRemoving intermediate container f7596e65a80b\n"}

我的構建是

build: @go build -race -o huski-go -ldflags="-X 'main.Version=${VERSION}'"

當我運行 ld -v 時,我得到:

@(#)PROGRAM:ld PROJECT:ld64-609.8 BUILD 2020 年 12 月 18 日 15:07:46 配置為支持 archs:armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m7 armv7k 使用 armv6m7 armv7 版本支持 armv7,支持 armv7v7。 clang-1200.0.32.29)(靜態支持 27,運行時為 27)TAPI 支持使用:Apple TAPI 版本 12.0.0 (tapi-1200.0.23.5)

有沒有人在新的 Macbook 上遇到過這個問題?

經過一番調查,我發現在將 Alpine 容器用於我的 Go 應用程序時,這似乎是一個問題。 為了解決這個問題,我必須在我的 Dockerfile 中添加binutils-gold依賴項。

我的 Dockerfile 現在如下所示,並已修復該問題:

FROM golang:1.15.3-alpine3.12 AS builder

RUN apk update && apk add gcc make git libc-dev binutils-gold

ADD ./ /src/

WORKDIR /src/

RUN make build 

FROM alpine:3.12

COPY --from=builder /src/static /app/static
COPY --from=builder /src/huski-go /app/

ENTRYPOINT ["/app/huski-go"]

您可以在我在這里找到答案的地方閱讀更多相關信息: https : //github.com/nodejs/node/issues/4212

您應該以這種方式構建:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ...

此命令允許您在 arm 中構建 x86 映像

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM