docker - 如何为docker build缓存golang软件包的build工件?

标签 docker go

典型的go docker模式是这样的:

# cache modules
COPY go.mod .
COPY go.sum .
RUN go mod download

COPY . .
RUN make


在编译实际源之前,这将为下载的软件包创建一个(缓存的)层。最好在添加应用程序之前不仅下载而且编译软件包,以进一步加快重复构建的速度。

不管父应用程序如何,如何强制编译所有下载的软件包?

最佳答案

在docker build中使用go mod download的目的是避免等待依赖项的源代码被编译。由于您想避免这种行为,因此可以将该行替换为

RUN go get -d -v

关于docker - 如何为docker build缓存golang软件包的build工件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60474679/

相关文章:

go - 在文档中创建用户定义的键

json - Golang 错误 : interface conversion: interface {} is bool/float. ..,不是字符串

spring-boot - 如何在 Docker/Kubernetes 中安装 Java 自签名证书?

docker - 使用 https 的负载均衡器后面的 Keycloak Docker 失败

docker - sh 在 docker : syntax error: unexpected end of file (expecting "then") 上

azure - Azure 存储模拟器的 Docker 镜像 - nginx 错误

docker - 在 Docker 中,无法 cd 进入安装了 "go get"的目录?

go - 创建结构数组并初始化其中的元素时出错

docker - 有什么用!意思?找 。\! -用户redis -exec chown redis '{}' +

mysql - 结构用户 - 有很多 session 。查找给定 session 的用户