如何使用 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.
我想从 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.