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

我想从 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

回答1

我认为为此使用 ssh key 是最干净的。您实际上可以告诉 docker 使用本地 ssh 代理的配置。您需要为此启用 buildkit。 https://docs.docker.com/develop/develop-images/build_enhancements/#using-ssh-to-access-private-data-in-builds

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 key 添加到您的私有 bitbucket 存储库中,以便您可以使用它来下载依赖项。

有更多方法可以在运行指令的生命周期内挂载秘密。 https://docs.docker.com/develop/develop-images/build_enhancements/#new-docker-build-secret-information

回答2

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

回答3

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

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

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

最后,在 Dockerfile 中通过 git 协议运行 git clone。

喜欢:

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

相似文章

go - 为什么 Go 找不到这些源文件?

我正在尝试在树莓派上编译https://github.com/GoogleContainerTools/kaniko.git。我不在golang中编程,但几周前我能够在同一个树莓派上成功编译kanik...

随机推荐

最新文章