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