2017-04-25 48 views
0

我一直在这个问题上停留了一段时间,并且希望对此问题采取最佳实践方法。从本地建立码头图像而不是git克隆

我在Go中构建了一个应用程序,我想用Docker在AWS上发布。我下面就如何设置它,但是当我尝试构建命令,我收到以下错误AWS instructions

Sending build context to Docker daemon 182.8 MB 
Step 1/1 : FROM golang:1.8.1-onbuild 
# Executing 3 build triggers... 
Step 1/1 : COPY . /go/src/app 
Step 1/1 : RUN go-wrapper download 
---> Running in e6bc4dd7dc44 
+ exec go get -v -d 
github.com/<myaccount>/<myapp> (download) 
# cd .; git clone https://github.com/<myaccount>/<myapp> 
/go/src/github.com/<myaccount>/<myapp> 
Cloning into '/go/src/github.com/<myaccount>/<myapp>'... 
fatal: could not read Username for 'https://github.com': No such device or address 

我GOOGLE了一下,看来这可能是造成事实回购被设置为私人,我想保持这种方式。一种常见的方法似乎是在图像中嵌入证书或ssh密钥以进行部署,这听起来违背了安全性(甚至常识)方面的任何建议。

有没有什么办法可以做到这一点?为什么它甚至试图克隆任何东西,代码已经在那里?

编辑

的Dockerfile只包含以下行

FROM golang:1.8.1-onbuild 
+0

如果将源复制到GOPATH中,则不需要克隆回购。你如何准确地建立这个? – JimB

+0

请包含您的Dockerfile。 – Flimzy

+0

当你已经有文件时,你为什么要运行'go-wrapper download'? – BMitch

回答

1

下载是你正在使用的图像中的onbuild的一部分。你可以看到their dockerfile here。如果您不想包含该步骤,请切换至FROM golang:1.8.1并在Dockerfile中执行复制和安装步骤。例如

FROM golang:1.8.1 

RUN mkdir -p /go/src/app 
WORKDIR /go/src/app 

CMD ["go-wrapper", "run"] 

COPY . /go/src/app 
RUN go-wrapper install