如何在Azure DevOps Server 2020制品中存储Tar文件?
Azure DevOps Server 2020存储Docker镜像tar文件的解决方案
关于tar文件是否属于通用包的问题
tar格式的Docker镜像文件属于通用包范畴,Azure DevOps的通用包支持任意格式的文件,但Azure DevOps Server 2020确实不支持通用包功能,这就是你的tar文件被系统忽略的核心原因。
变通方案
1. 直接使用Azure容器注册表(ACR)存储Docker镜像
跳过tar打包步骤,在CI流程中直接将构建好的Docker镜像推送到ACR:
- 登录ACR:
az acr login --name <你的ACR名称> - 为镜像添加ACR标签:
docker tag <本地镜像名>:<版本> <你的ACR名称>.azurecr.io/<镜像名>:<版本> - 推送镜像到ACR:
docker push <你的ACR名称>.azurecr.io/<镜像名>:<版本>
后续SIT环境部署时,直接从ACR拉取镜像即可,这是最贴合Docker镜像管理规范的方案。
2. 上传tar文件到Azure存储账户Blob容器
将tar格式的镜像文件上传至Azure Blob存储,后续部署时再下载加载:
- CI流程中用Azure CLI上传:
az storage blob upload --account-name <存储账户名> --container-name <容器名> --name <目标文件名.tar> --file <本地tar文件路径> - 部署阶段执行:
az storage blob download --account-name <存储账户名> --container-name <容器名> --name <目标文件名.tar> --file <本地保存路径>,再通过docker load -i <tar文件名>加载镜像。
3. 借助Git LFS存储tar文件
如果团队已启用Git LFS,可以将tar文件作为LFS对象存入Azure DevOps Server的Git仓库:
- 配置LFS跟踪tar文件:
git lfs track "*.tar" - 提交并推送文件到Git仓库
部署时拉取仓库中的LFS文件,再用docker load命令加载镜像。注意此方案适合文件大小适中的场景,过大文件可能拖累仓库性能。
内容的提问来源于stack exchange,提问作者Julie
相关产品推荐
相关产品推荐

