在Docker中获取Go的所有依赖包

时间:2017-08-25 06:18:21

标签: docker go

当我执行以下操作时,我可以获得所有依赖包:

if(sum < ilm_selected || sum==''){
   //some code
}

但是在docker中执行此操作的最佳方法是什么?我不想要我的docker-app中的所有repo,所以我正在寻找一种方法在docker容器中执行这个方法到某个卷(或类似的东西)并重用它。 / p> 我正在考虑类似的事情。 Dockerfile

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

构建图片

FROM golang:1.8

WORKDIR /app
ADD ./src

如何在不每次拉/下载的情况下重用依赖项?我想要它们的数量。我知道码头工作量有点但我不知道在这种情况下如何使用它。

1 个答案:

答案 0 :(得分:3)

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

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

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