自建 gitea+runner 构建一个 x86 和 arm 的 docker 镜像 就这么简单的命令
docker buildx build --platform linux/amd64,linux/arm64 -t xxxxxxxxx:latest --push .
Dockerfile 里跑了个最简单的编译命令
RUN go install tailscale.com/cmd/derper@${LATEST_VERSION}
提交后我的八核 cpu 服务器一副地狱绘图,然后就这么 100%占用着,一直编译了十几分钟才结束
突然想起来,公司项目在 Github Actions 上用 buildx 编辑多平台镜像,一直有个问题就是编译 arm 镜像的时候里面的编译工作要花至少 20 分钟(而 x86 镜像只要几十秒) 原来是这么回事。。。
1
yinmin 18 天前
如果必须构建 arm64 镜像,性价比最高的是:买一个 arm64 开发板 git+docker build 。
我用 300 多元买的 RK3399(双核 A72+四核 A53,4GB 内存)开发板 build 了你说的镜像,用时 130 多秒。 |
2
Yadomin 18 天前 via Android
go 代码直接 cross compile 啊,docker 这个走 qrmu-user 的
|
3
BeautifulSoap OP @Yadomin 是的,后来公司项目直接 cross compile 了。只不过同样的问题同样出现在个人自建项目上比较奇妙,也是知道了为什么那么耗时间了
|
4
BeautifulSoap OP @yinmin 其实真要 build 镜像的话我倒是有甲骨文的免费 arm 机子,主要还是每次 gitea action 动起来的时候必须同时 build arm 和 x86 两个平台的镜像。单独各自 build 还是挺麻烦的
|
5
Akkuman 18 天前 via Android
buildx 可以指定不同的远端,比如你可以配置成 x86 镜像指定在哪个远端 docker 服务上 build ,arm64 在哪个远端 docker 服务上 build ,配置好之后,命令相同,docker buildx build --platform xxxx ,就可以使用远端服务器 build ,这样你可以单独使用 arm64 机器来交叉编译 arm64 镜像
|