为了账号安全,请及时绑定邮箱和手机立即绑定

无法在具有 Linux Runner 的 Docker 容器中执行 GO 二进制文件

无法在具有 Linux Runner 的 Docker 容器中执行 GO 二进制文件

Go
翻翻过去那场雪 2022-06-06 15:26:51
Go 和二进制文件是我们 docker 镜像的一部分。我尝试了所有可能的组合来构建 Go 二进制文件export GOARCH=386 && export GOOS=linux && go build ./cmd/statusexport GOARCH=amd64 && export GOOS=windows && go build ./cmd/status$ uname -a Linux runner-4KP_No95-project-35871-concurrent-0 44.44.444-115.233.amzn1.x86_64 #1 SMP Thu Feb 27 23:49:15 UTC 2020 x86_64 GNU/Linux得到错误为/pipeline/status: /pipeline/status: cannot execute binary file来自 docker 文件的示例部分是 -ARG GOLANG_VERSION=1.14FROM golang:${GOLANG_VERSION} as build-helpersENV GOPRIVATE=code.abcd.comRUN mkdir -p /pipeline-helpersADD /reusable-aspects/ci-caching/golang-preheat-cache  /golang-preheat-cacheRUN cd /golang-preheat-cache && go mod downloadADD helpers/go-pipeline-commands /pipeline-helpers/RUN cd /pipeline-helpers && CGO_ENABLED=0 GOOS=linux makeFROM alpineRUN mkdir -p /pipelineWORKDIR /pipelineCOPY --from=build-helpers /pipeline-helpers/commit .COPY --from=build-helpers /pipeline-helpers/status .RUN chmod a+x commitRUN chmod a+x statusENTRYPOINT ["./commit"]CMD []
查看完整描述

1 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

golang:1.14不是alpine基础,而是debian基础。因此,您当然不能在 alpine 映像中运行 debian 构建二进制文件。


尝试更换


FROM golang:${GOLANG_VERSION} as build-helpers



FROM golang:${GOLANG_VERSION}-alpine as build-helpers


并添加以下行以下载构建二进制文件所需的库


RUN apk update && \

  apk --update upgrade && \

  apk add --no-cache ca-certificates gcc musl-dev git && \

  update-ca-certificates && \

  rm -rf /var/cache/apk/*

更新


添加make并将apk更新并添加到下面FROM golang:...


FROM golang:${GOLANG_VERSION}-alpine as build-helpers


RUN apk update && \

  apk --update upgrade && \

  apk add --no-cache ca-certificates gcc musl-dev git make && \

  update-ca-certificates && \

  rm -rf /var/cache/apk/*


OP 更新后更新问题


由于您将alpine构建状态二进制文件从helperbase 复制到最终映像golang:${VERSION},即debian环境,因此它当然无法运行。


我建议您对所有构建阶段或最终 docker 映像仅使用一个环境(alpine或debian)。


所以你第一个 docker 镜像的第一个构建状态应该是


FROM golang:${GOLANG_VERSION}

最终图像请使用debian而不是 alpine


FROM debian


查看完整回答
反对 回复 2022-06-06
  • 1 回答
  • 0 关注
  • 351 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号