簡體   English   中英

如何使用 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

我認為為此使用 ssh 密鑰是最干凈的。 您實際上可以告訴 docker 使用本地 ssh 代理的配置。 您需要為此啟用 buildkit。 請參閱文檔

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 存儲庫中,以便您可以使用它來下載依賴項。


有更多方法可以在運行指令的生命周期內掛載秘密。 請參閱文檔

永遠不要這樣做,您需要在docker build命令之外下載 repo,並在構建時使用COPY將這些文件傳輸到圖像中

首先,您可以在 Bitbucket 上設置一個 ssh 密鑰。

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

使用COPY將您的私鑰復制到 docker 容器。

最后,在 Dockerfile 中通過 git 協議運行 git clone。

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

對我來說,幫助將“機器 github.com 登錄用戶名密碼 APIKEY”添加到 $HOME/.netrc

我的 Dockerfile:

FROM golang:latest as builder
ARG GIT_CONFIG
WORKDIR /builder/
ADD . /builder/
RUN "${GIT_CONFIG}" > $HOME/.netrc
&& CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main ./cmd/main.go
&& rm -f $HOME/.netrc

FROM scratch
COPY --from=builder /builder/main/ .

也許它會幫助你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM