使用Azure Devops管道的Docker.NET(非核心)

使用Azure Devops管道的Docker.NET(非核心),azure,docker,asp.net-web-api,azure-devops,azure-pipelines,Azure,Docker,Asp.net Web Api,Azure Devops,Azure Pipelines,我正在尝试使用Azure Devops管道在AWS ECR/ECS中发布docker容器。 那么我该怎么做: 我创建了一个asp.NET WebApi项目(不是核心) 我从VisualStudio2019添加了dockerfile(我没有更改) 默认文件) 我在azure devops推出了回购协议 我创建了用于构建解决方案的构建管道 我向管道中添加了docker构建操作 尝试将图像推送到AWS ECR 结果是,在解决方案构建之前,一切都正常,但当我尝试构建docker时,我出现了一个复制错误(

我正在尝试使用Azure Devops管道在AWS ECR/ECS中发布docker容器。 那么我该怎么做:

  • 我创建了一个asp.NET WebApi项目(不是核心)
  • 我从VisualStudio2019添加了dockerfile(我没有更改) 默认文件)
  • 我在azure devops推出了回购协议
  • 我创建了用于构建解决方案的构建管道
  • 我向管道中添加了docker构建操作
  • 尝试将图像推送到AWS ECR
  • 结果是,在解决方案构建之前,一切都正常,但当我尝试构建docker时,我出现了一个复制错误(这是日志):

    我的管道YAML代码是:

    pool:
      name: Azure Pipelines
      demands:
      - msbuild
      - visualstudio
    
    steps:
    - task: NuGetToolInstaller @ 0
      displayName: 'Use NuGet 4.4.1'
      inputs:
        versionSpec: 4.4.1
    
    - task: NuGetCommand @ 2
      displayName: 'NuGet restore'
      inputs:
        restoreSolution: XXXSolution.sln
    
    - task: VSBuild @ 1
      displayName: 'Build solution'
      inputs:
        solution: XXXSolution.sln
        msbuildArgs: '/ p: DeployOnBuild = true / p: WebPublishMethod = Package / p: PackageAsSingleFile = true / p: SkipInvalidConfigurations = true / p: PackageLocation = "$ (build.artifactstagingdirectory) \\"'
        platform: '$ (BuildPlatform)'
        configuration: '$ (BuildConfiguration)'
    
    - task: PublishBuildArtifacts @ 1
      displayName: 'Publish Artifact'
      inputs:
        PathtoPublish: '$ (build.artifactstagingdirectory)'
        ArtifactName: '$ (Parameters.ArtifactName)'
      enabled: false
      condition: succeededOrFailed ()
    
    - task: ExtractFiles @ 1
      displayName: 'Extract files'
      inputs:
        archiveFilePatterns: '$ (build.artifactstagingdirectory) /XXX.zip'
        destinationFolder: '$ (build.artifactstagingdirectory) / XXX / XXX / obj / Docker / publish'
    
    - task: Docker @ 2
      displayName: build
      inputs:
        command: build
        Dockerfile: XXX / XXX / Dockerfile
        arguments: '-t XXX'
    
    - task: CopyFiles @ 2
      displayName: 'Copy Files to: $ (build.artifactstagingdirectory) / obj / Docker / publish'
      inputs:
        SourceFolder: '$ (build.artifactstagingdirectory)'
        TargetFolder: '$ (build.artifactstagingdirectory) / obj / Docker / publish'
      enabled: false
    
    - task: AmazonWebServices.aws-vsts-tools.ECRPushImage.ECRPushImage@1
      displayName: 'Push Image:'
      inputs:
        awsCredentials: awsCredentials
        regionName: 'eu-west-1'
        sourceImageName: XXX
        repositoryName: XXX
    
    - task: PublishSymbols @ 2
      displayName: 'Publish symbols path'
      inputs:
        SearchPattern: '** \ bin \ ** \ *. Pdb'
        PublishSymbols: false
      enabled: false
      continueOnError: true
    
    有人能帮我了解错误在哪里吗?

    我认为您的任务”Docker@2“和”CopyFiles@2“它们是倒置的


    如果查看docker日志,您可以看到docker希望在\obj\docker\publish文件夹中找到发布输出,但您仅在发布后将其复制到该文件夹中Docker@2.

    这是更改任务顺序后的新日志:

    2020-02-07T10:45:04.4589916Z ##[section]Starting: build
    2020-02-07T10:45:04.4701538Z ==============================================================================
    2020-02-07T10:45:04.4701659Z Task         : Docker
    2020-02-07T10:45:04.4701727Z Description  : Build or push Docker images, login or logout, or run a Docker command
    2020-02-07T10:45:04.4701805Z Version      : 2.162.0
    2020-02-07T10:45:04.4701860Z Author       : Microsoft Corporation
    2020-02-07T10:45:04.4701927Z Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/build/docker
    2020-02-07T10:45:04.4702016Z ==============================================================================
    2020-02-07T10:45:04.8198317Z [command]"C:\Program Files\Docker\docker.exe" build -f D:\a\1\s\XXX\XXX\Dockerfile --label com.azure.dev.image.system.teamfoundationcollectionuri=https://dev.azure.com/XXX/ --label com.azure.dev.image.system.teamproject=XXX --label com.azure.dev.image.build.repository.name=XXX-backend --label com.azure.dev.image.build.sourceversion=3580bfefbe0592212a1d9c76c6d30dd472e22748 --label com.azure.dev.image.build.repository.uri=https://XXX@dev.azure.com/XXX/XXX/_git/XXX-backend --label com.azure.dev.image.build.sourcebranchname=develop --label "com.azure.dev.image.build.definitionname=XXX WebApi Release Docker" --label com.azure.dev.image.build.buildnumber=20200207.1 --label com.azure.dev.image.build.builduri=vstfs:///Build/Build/11467 -t XXX D:\a\1\s\XXX\XXX
    2020-02-07T10:45:11.7158942Z Sending build context to Docker daemon  3.072kB
    2020-02-07T10:45:11.7159461Z 
    2020-02-07T10:45:11.7600295Z Step 1/13 : FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
    2020-02-07T10:45:11.7698947Z  ---> a5bc996f06b3
    2020-02-07T10:45:11.7699194Z Step 2/13 : ARG source
    2020-02-07T10:45:12.2010655Z  ---> Running in e5d56a7c6647
    2020-02-07T10:45:14.4009801Z Removing intermediate container e5d56a7c6647
    2020-02-07T10:45:14.4010663Z  ---> 298dd53c140a
    2020-02-07T10:45:14.4011018Z Step 3/13 : WORKDIR /inetpub/wwwroot
    2020-02-07T10:45:14.4463513Z  ---> Running in e44696a950d4
    2020-02-07T10:45:15.9378724Z Removing intermediate container e44696a950d4
    2020-02-07T10:45:15.9379138Z  ---> e6e8d9c8ab53
    2020-02-07T10:45:15.9380224Z Step 4/13 : COPY ${source:-obj/Docker/publish} .
    2020-02-07T10:45:15.9380626Z COPY failed: CreateFile \\?\C:\ProgramData\docker\tmp\docker-builder901134993\obj\Docker\publish: The system cannot find the path specified.
    2020-02-07T10:45:15.9467650Z ##[error]The process 'C:\Program Files\Docker\docker.exe' failed with exit code 1
    2020-02-07T10:45:15.9528776Z ##[section]Finishing: build
    

    正如我所说,“Docker希望在\obj\Docker\publish文件夹中找到发布输出”,但是Docker文件中的复制步骤没有指向正确的文件夹。您需要更改步骤4的参数。您好,ActiveDev,这个问题怎么样,您解决了吗?您好,ActiveDev,关于这个问题的任何更新,您是否有机会实现Alexandre Nourissier建议的解决方案?你能解决吗?
    2020-02-07T10:45:04.4589916Z ##[section]Starting: build
    2020-02-07T10:45:04.4701538Z ==============================================================================
    2020-02-07T10:45:04.4701659Z Task         : Docker
    2020-02-07T10:45:04.4701727Z Description  : Build or push Docker images, login or logout, or run a Docker command
    2020-02-07T10:45:04.4701805Z Version      : 2.162.0
    2020-02-07T10:45:04.4701860Z Author       : Microsoft Corporation
    2020-02-07T10:45:04.4701927Z Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/build/docker
    2020-02-07T10:45:04.4702016Z ==============================================================================
    2020-02-07T10:45:04.8198317Z [command]"C:\Program Files\Docker\docker.exe" build -f D:\a\1\s\XXX\XXX\Dockerfile --label com.azure.dev.image.system.teamfoundationcollectionuri=https://dev.azure.com/XXX/ --label com.azure.dev.image.system.teamproject=XXX --label com.azure.dev.image.build.repository.name=XXX-backend --label com.azure.dev.image.build.sourceversion=3580bfefbe0592212a1d9c76c6d30dd472e22748 --label com.azure.dev.image.build.repository.uri=https://XXX@dev.azure.com/XXX/XXX/_git/XXX-backend --label com.azure.dev.image.build.sourcebranchname=develop --label "com.azure.dev.image.build.definitionname=XXX WebApi Release Docker" --label com.azure.dev.image.build.buildnumber=20200207.1 --label com.azure.dev.image.build.builduri=vstfs:///Build/Build/11467 -t XXX D:\a\1\s\XXX\XXX
    2020-02-07T10:45:11.7158942Z Sending build context to Docker daemon  3.072kB
    2020-02-07T10:45:11.7159461Z 
    2020-02-07T10:45:11.7600295Z Step 1/13 : FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
    2020-02-07T10:45:11.7698947Z  ---> a5bc996f06b3
    2020-02-07T10:45:11.7699194Z Step 2/13 : ARG source
    2020-02-07T10:45:12.2010655Z  ---> Running in e5d56a7c6647
    2020-02-07T10:45:14.4009801Z Removing intermediate container e5d56a7c6647
    2020-02-07T10:45:14.4010663Z  ---> 298dd53c140a
    2020-02-07T10:45:14.4011018Z Step 3/13 : WORKDIR /inetpub/wwwroot
    2020-02-07T10:45:14.4463513Z  ---> Running in e44696a950d4
    2020-02-07T10:45:15.9378724Z Removing intermediate container e44696a950d4
    2020-02-07T10:45:15.9379138Z  ---> e6e8d9c8ab53
    2020-02-07T10:45:15.9380224Z Step 4/13 : COPY ${source:-obj/Docker/publish} .
    2020-02-07T10:45:15.9380626Z COPY failed: CreateFile \\?\C:\ProgramData\docker\tmp\docker-builder901134993\obj\Docker\publish: The system cannot find the path specified.
    2020-02-07T10:45:15.9467650Z ##[error]The process 'C:\Program Files\Docker\docker.exe' failed with exit code 1
    2020-02-07T10:45:15.9528776Z ##[section]Finishing: build