如何使用 bitbucket 和 golang 项目从 Dockerfile 下载私有仓库

How to download private repo from Dockerfile with bitbucket and golang project

我想从 bitbucket 下载私有存储库,但出现一些错误

fatal: could not read Username for 'https://bitbucket.org': terminal prompts disabled

这是我的 dockerfile

FROM golang:1.17 as build

RUN apt update && apt upgrade -y && \
  apt install -y git \
  make openssh-client 

WORKDIR /src 

COPY . . 


RUN git config --global url."https://username:app_password@bitbucket.org".insteadOf "https://bitbucket.org"
RUN go mod tidy

RUN go build -o user-management

永远不要这样做,你需要在 docker build 命令之外下载 repo,并使用 COPY 将这些文件传输到图像中,当构建

首先,您可以在 Bitbucket 上设置一个 ssh 密钥。

https://support.atlassian.com/bitbucket-cloud/docs/set-up-an-ssh-key/

使用 COPY 将您的私钥复制到 docker 容器。

最后,运行 git 通过 Dockerfile 中的 git 协议克隆。

喜欢:

git clone git@bitbucket.org:accountname/reponame.git

我认为为此使用 ssh 密钥最干净。您实际上可以告诉 docker 使用本地 ssh 代理的配置。您需要为此启用 buildkit。 See the docs.

eval "$(ssh-agent -s)"
ssh-add /path/to/ssh-key
docker build --ssh default --tag example .

在您的 Dockerfile 中,您需要将其挂载到特定的 运行 指令:

RUN --mount=type=ssh go mod download

这需要您将相同的 ssh 密钥添加到您的私有 bitbucket 存储库,以便您可以使用它来下载依赖项。


有更多方法可以在 运行 指令的生命周期内安装机密。 See the docs.