我们一直在使用docker构建我们的镜像。
使用Jenkins进行构建
docker build .
构建大约需要5分钟。
然而,现在当使用docker buildx --platform linux/amd64, linux/arm64.
构建过程要长得多,大约需要30分钟。根据我的理解,这是因为节点是amd64,它使用模拟器来构建arm64。
如何使更快
?我们的dockerfile中有npm install命令和一些shell命令
如果你可以从arm64
ec2实例运行该命令,如Graviton,它将运行得更快。当我们在arm64
上构建多拱映像时,我们可以在几分钟内构建,但是在amd64
上做同样的事情时,根据映像的不同,可能需要半个多小时。不幸的是,arm64
芯片似乎能够比amd64
更好地处理多拱构建。
除了在单个主机上运行docker buildx
之外,另一个选择是在它们的本机架构上快速构建两个映像,将生成的容器推送到repo,然后推送清单以将它们组合到一个多arch容器中。对于较大的构建,这可能是一种方法,而不是永远等待构建完成。
样本参考文献:
- https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-multi-architecture-image.html
- https://www.docker.com/blog/multi-arch-build-and-images-the-simple-way/