在 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 .