[英]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.