key*_*don 5 github travis-ci docker dockerhub
我已经在github上将dockerjs应用程序码头化了。我的Dockerfile基于官方的nodejs映像。官方节点存储库无缝支持多种架构(x86,amd64,arm)。这意味着我可以在不同的机器上构建完全相同的Dockerfile,从而为相应的体系结构生成不同的映像。
因此,我也尝试为我的应用程序无缝提供相同的体系结构。但是如何?我的目标是尽可能地使其自动化。我知道理论上我需要创建一个docker-manifest,它充当docker-repo并将最终用户-docker-clients重定向到其合适的映像。
Docker-Hub本身可以监视github存储库并启动自动构建。多数民众赞成在照顾amd64图像。但是其余的架构呢?还有一个名为“ TravisCI”的服务,我想它可以在qemu的帮助下进行手臂建设。然后,我认为清单清单可以随后静态引用这两个仓库。但是,这仍然使一些架构无法实现。
但是,使用多种服务/方式来构建同一个应用程序是错误的。有谁知道这个问题更好,更完整的解决方案?它基本上是通过几台机器运行相同的dockerfile并将它们记录在清单中。
从 Docker 18.02 CLI 开始,如果启用了客户端实验功能,您可以创建多架构清单并将其推送到 docker 注册表。我能够使用 VSTS 并在构建后为多架构标签创建自定义构建任务。我遵循了这个模式。
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}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我在自定义 VSTS 任务中打包了适用于 Windows 和 Linux 的 18.02 docker CLI,因此不需要安装 docker。Manifest 命令似乎不需要 docker 守护进程才能正常运行。
| 归档时间: |
|
| 查看次数: |
767 次 |
| 最近记录: |