You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure DevOps流水线中传递Docker容器输出作为构建工件

在Azure DevOps流水线中传递Docker容器输出文件的方案

核心思路

把Docker容器内的输出目录挂载到流水线代理主机的本地目录,将容器生成的文件同步到主机后,再通过Azure DevOps的PublishPipelineArtifact任务将文件发布为流水线制品,后续阶段通过DownloadPipelineArtifact任务获取即可。

具体实现步骤

1. 第一阶段:运行模型训练容器并导出输出文件

在训练阶段的Docker运行命令中,使用-v参数将容器内的输出目录(假设你的similarity.py在容器内的/app目录下,生成的data文件夹在此)挂载到代理主机的$(Build.ArtifactStagingDirectory)/model-data目录(该目录是Azure DevOps预定义的临时目录,专门用于存放待发布的制品)。

示例YAML片段:

stages:
- stage: Train_Model
  jobs:
  - job: Train
    steps:
    - script: |
        # 构建训练镜像
        docker build -t model-train -f Dockerfile.train .
        # 运行容器并挂载目录,将容器内data文件夹同步到主机
        docker run -v $(Build.ArtifactStagingDirectory)/model-data:/app/data model-train python similarity.py
      displayName: '运行模型训练容器'
    
    - task: PublishPipelineArtifact@1
      inputs:
        targetPath: '$(Build.ArtifactStagingDirectory)/model-data'
        artifact: 'trained-model'
        publishLocation: 'Container'
      displayName: '发布训练模型制品'

2. 第二阶段:下载制品并构建API容器

在API构建阶段,先下载之前发布的trained-model制品,然后将下载的模型目录同步到源码目录,供Dockerfile读取使用。

示例YAML片段:

- stage: Build_API
  dependsOn: Train_Model
  jobs:
  - job: Build
    steps:
    - task: DownloadPipelineArtifact@2
      inputs:
        artifact: 'trained-model'
        path: '$(Build.SourcesDirectory)/data'  # 将模型文件下载到源码目录的data文件夹,供Dockerfile访问
      displayName: '下载训练模型制品'
    
    - script: |
        # 构建API镜像,此时Dockerfile可直接读取$(Build.SourcesDirectory)/data下的模型文件
        docker build -t api-service -f Dockerfile.api .
      displayName: '构建API容器镜像'

关键注意事项

  • 确保Dockerfile.train中,similarity.py生成的模型文件确实输出到容器内的指定目录,需根据实际路径调整挂载参数。
  • 优先使用$(Build.ArtifactStagingDirectory)而非自定义目录,避免权限问题,该目录是Azure DevOps流水线默认拥有读写权限的目录。
  • 两个阶段必须通过dependsOn明确依赖关系,保证训练阶段完成后再执行API构建阶段。

内容的提问来源于stack exchange,提问作者Psychotechnopath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 13:39:40