2015-04-07 166 views
1

我想在從Dockerfile構建圖像時克隆存儲庫。我使用的sequenceiq/docker-spark Dockerfile和如下(前ENTRYPOINT線)延長它:我得到了幾分鐘後,下面的錯誤Dockerfile中的Git克隆回購

RUN yum install -y git 
RUN git clone [email protected]:myorg/myrepo.git 

Initialized empty Git repository in /myrepo/.git/ 
fatal: The remote end hung up unexpectedly 
INFO[0128] The command [/bin/sh -c git clone [email protected]:myorg/myrepo.git] returned a non-zero code: 128 

我已經添加了圖像的id_rsa.pub到該存儲庫的部署密鑰。我嘗試在圖像上運行bash,並嘗試運行git clone,同樣的問題。我很難過。我發現這個相關的問題here,但我的SSH密鑰是無密碼的,所以它沒有幫助。

回答

0

我已將圖像的id_rsa.pub添加到該存儲庫的部署密鑰。

如果你要使用SSH密鑰來驗證GitHub上,你需要做在構建過程中使用的容器內相應的私鑰(例如,通過與COPY指令將其複製到容器)。

對於公共存儲庫,最簡單的解決方案是使用存儲庫的https:// URL,而不是通過ssh訪問它。

對於專用庫,使用https:// URL可能是最容易,然後安排來提供經由git的憑證機構(http://git-scm.com/docs/git-credential-store)憑證。

+0

基本映像生成一個無密碼的私人公鑰對。我將該公鑰從映像添加到存儲庫的部署密鑰中,因此相應的私鑰在'/ root/.ssh/id_rsa'中可用。而且,如果我不添加公鑰,我會得到同樣的錯誤。 –

0

我認爲Git可能試圖檢查服務器與known_hosts。嘗試將-o CheckHostIP=no -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null傳遞給SSH。

another question有關於如何將這些值傳遞給Git的良好答案。基本上,你需要運行Git> 2.3或者創建一個小小的shell腳本,以你想要的方式調用SSH並指向Git。