如何为后续不同的 docker 构建缓存 go 依赖项

问题描述 投票:0回答:0

在 AWS Codebuild 项目中,我正在为多个服务依次构建 docker 容器。他们都使用集中式

go.mod
go.sum
vendors/modules.txt
文件,虽然在每个Dockerfile中,我没有调用
go mod tidy; go mod vendor
,我只是从Codebuild源复制必要的目录并运行
go build service_a
.

service_a和service_b之间存在共享库,service_a docker build后没有缓存。有一种技术可以为同一 docker 容器的后续构建缓存依赖项:https://docs.docker.com/build/cache/#use-the-dedicated-run-cache,但是有没有办法缓存不同图像构建之间的依赖关系?

文件结构:

DockerfileA:

COPY go.mod /root/app
COPY go.sum /root/app

COPY service_a /root/app

WORKDIR /root/app/service_a
RUN go build service_a

Docker文件B:

COPY go.mod /root/app
COPY go.sum /root/app

COPY service_a /root/app

WORKDIR /root/app/service_b
RUN go build service_b

buildspec.yaml

docker build -t service_a -f service_a/Dockerfile .
docker build -t service_b -f service_b/Dockerfile .
docker go aws-codebuild
© www.soinside.com 2019 - 2024. All rights reserved.