我已经在 github上对一个nodejs app进行了docker化.我的Dockerfile基于官方nodejs图像.官方node-repo无缝地支持多种体系结构(x86,amd64,arm).这意味着我可以在不同的机器上构建完全相同的Dockerfile,从
所以我也试图为我的应用程序无缝地提供相同的架构.但是怎么样?
我的目标是尽可能地自动化它.
我知道理论上我需要创建一个docker-manifest,它充当docker-repo并将最终用户-docker-clients重定向到他们合适的图像.
Docker-Hub本身可以监视github仓库并启动自动构建.多数民众赞成将照顾amd64图像.但剩下的架构呢?
还有一项叫做“TravisCI”的服务,我想可以在qemu的帮助下完成手臂的构建.
然后我认为这两个repos可以由manifest-repo静态引用.但这仍然使一些架构无法实现.
但使用多种服务/构建相同应用程序的方式感觉不对.有谁知道这个问题的更好,更完整的解决方案?
它基本上通过几台机器运行相同的dockerfile并将其记录在清单中.
docker manifest create --amend {multi-arch-tag} {os-specific-tag-1} {os-specific-tag-2} docker manifest annotate {multi-arch-tag} {os-specific-tag-1} --os {os-1} --arch {arch-1} docker manifest annotate {multi-arch-tag} {os-specific-tag-2} --os {os-2} --arch {arch-2} docker manifest push --purge {multi-arch-tag}
在旁注中,我在我的自定义VSTS任务中打包了用于Windows和Linux的18.02 docker CLI,因此不需要安装docker. manifest命令似乎不需要docker守护程序才能正常运行.