在Docker中获取Go的所有相关软件包

我可以得到所有我的依赖包,当我做以下事情:

$ cd myrepo $ go get -d ./... 

但在docker中做这件事的最好方法是什么? 我不希望所有的回购在我的docker应用程序,所以我正在寻找一种方法来执行这个docker容器内的一些卷(或类似的东西),并重用它。

我正在考虑类似的东西。 Dockerfile

 FROM golang:1.8 WORKDIR /app ADD ./src 

build立图像

 $ docker build -t myapp . $ docker run myapp go get -d ./... 

我怎样才能重用依赖项,而不是每次都拉/下载它们? 我希望他们在某种程度上。 我知道docker卷有点,但我不知道如何在这种情况下使用它。

最好的方法是使用构build器模式。 在第一个映像中,下载所有的依赖关系并构build可执行文件。 在第二个复制可执行文件到一个新的图像。 您可以使用临时图像作为基础,但高山可能会更好,因为它也很小,但提供了一个shell和一个数据包pipe理器,用于https等证书。

如果您首先复制源代码并安装依赖项,那么将会随着每个源代码更改而下载它们,因此最好使用go dep之类的东西。 有了它,您可以复制Gopkg文件,安装您的依赖关系,然后复制源代码。

官方文章https://docs.docker.com/engine/userguide/eng-image/multistage-build/更详细的https://blog.alexellis.io/mutli-stage-docker-builds/