使用Docker容器中的1.10构建缓存加速Go构建

前端之家收集整理的这篇文章主要介绍了使用Docker容器中的1.10构建缓存加速Go构建前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个带有大型供应商/目录的Go项目,几乎从未改变过.

我正在尝试使用新的go 1.10构建缓存功能来加速我在本地Docker引擎中的构建.

避免重新编译我的供应商/目录就足够了.所以我正在尝试将Go等效于Python的这种常见Dockerfile模式:

FROM python
COPY requirements.txt .              # <-- copy your dependency list
RUN pip install -r requirements.txt  # <-- install dependencies
COPY ./src ...                       # <-- your actual code (everything above is cached)

同样我试过:

FROM golang:1.10-alpine
COPY ./vendor ./src/myproject/vendor
RUN go build -v myproject/vendor/... # <-- pre-build & cache "vendor/"
COPY . ./src/myproject

然而,这是“无法找到包”错误(可能是因为您无法在供应商/直接正常构建东西).

有没有人能够解决这个问题?

最佳答案
这是适合我的东西:

FROM golang:1.10-alpine
WORKDIR /usr/local/go/src/github.com/myorg/myproject/
COPY vendor vendor
RUN find vendor -maxdepth 2 -mindepth 2 -type d -exec sh -c 'go install -i github.com/myorg/myproject/{}/... || true' \;
COPY main.go .
RUN go build main.go

它确保首先安装出售的库.只要你不改变图书馆,你就是好的.

猜你在找的Docker相关文章