gpt4 book ai didi

docker - 无法成功构建基于 Go 的 Docker 镜像

转载 作者:行者123 更新时间:2023-12-01 22:21:41 32 4
gpt4 key购买 nike

尝试构建基于 GoLang 的 Docker 镜像时,Docker 执行器遇到以下错误:

. . .go: $GIT_REPO@v1.9.11: reading $GIT_REPO/go.mod at revision v0.0.07: unknown revision v0.0.07


在以下 RUN来自 Dockerfile 的指令用过的:
RUN go build . . .
在哪里 GIT_REPO代表私有(private) repo 。完整路径,包括所有者和名称。
Docker 执行器遇到此错误并显示 go1.13.x及更高; Docker 执行器执行 不是 遇到此错误 go1.12.x .
vendor 目录。包含所有必需的软件包。标签被确认存在。
甚至将正确的 SSH key 添加到私有(private) Go 通用存储库中。与成功
git clone . . .
build 之外的命令ing Docker 镜像,但仍然遇到上述相同的错误。

最佳答案

编辑:
bitbucket.org 中验证您的远程仓库居然有v0.0.7您尝试构建的标签。
如果本地存在 git 标签,则本地构建可能会起作用 - docker 构建将从远程源中提取并失败并出现类似 go.mod at revision v0.0.7: unknown revision v0.0.7 的错误- 如果标签远程不存在。
enter image description here
要将本地标签推送到远程仓库:

git push --tags
更精细的标签操作 see .

默认情况下,Docker 构建只能访问公共(public)存储库。由于您需要访问私有(private)仓库,因此您需要在 Docker 构建过程中包含一个 read-ssh key (永远不要将 key checkin 仓库!)。
至关重要 ,但是,您在 multi-stage build 中执行此操作,因此您不会在最终镜像中包含 SSH key 。
这个 blog post走过所有的步骤。但要包括一个工作示例:
构建 docker 镜像:
SSH_PRIVATE_KEY="$(cat ~/.ssh/id_rsa)" \
docker build -t "myapp:v0.0.1" --build-arg SSH_PRIVATE_KEY .
Dockerfile使用 bitbucket.org私有(private) repo 网站:
FROM golang:1.14.6 AS build

WORKDIR /bld
COPY *.go go.mod go.sum ./

ARG SSH_PRIVATE_KEY
# ***NEVER*** DO THIS IN A SINGLE-STAGE DOCKER BUILD (see below)
RUN \
mkdir -p ~/.ssh && \
umask 0077 && \
echo "${SSH_PRIVATE_KEY}" > ~/.ssh/id_rsa && \
git config --global url."git@bitbucket.org:".insteadOf https://bitbucket.org/ && \
ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts

RUN \
go get && \
CGO_ENABLED=0 go build -o app

# final stage of multi-stage: will appropriately *NOT* include SSH keys
FROM scratch

COPY --from=build \
/etc/ssl /etc/ssl

COPY --from=build \
/bld/app /app/myapp

CMD ["/app/myapp"]

关于docker - 无法成功构建基于 Go 的 Docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63120651/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com