运行 Azure CLI 任务时管道失败

问题描述 投票:0回答:1

早上好:

在 Azure DevOps 中,我正在设置一个管道,该管道基于具有 docker 项目(带有 Docker-Compose 文件)的存储库,自动完成和发布服务。问题是,对于以下任务,它给了我一个路线错误:

  - task: AzureCLI@2
      displayName: Docker Build
      inputs:
        azureSubscription: '$(azureSubscriptionEndpoint)'
        scriptType: 'bash'
        scriptLocation: 'inlineScript'
        inlineScript: |
          docker build -t service:$(tag).
          docker save service:$(tag) -o service_$(tag).tar


/usr/bin/bash /home/vsts/work/_temp/azureclitaskscript1713529050063.sh
#0 building with "default" instance using docker driver

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 2B done
#1 DONE 0.0s

#2 [internal] load .dockerignore

#2 传输上下文:2B 完成 #2 完成 0.0 秒 错误:无法解决:无法读取dockerfile:打开/var/lib/docker/tmp/buildkit-mount2163565617/Dockerfile:没有这样的文件或目录 来自守护程序的错误响应:引用不存在



I don't think he's looking for it in the right folder, but I don't know where to look for it or how. Any ideas?

This first part of the Pipeline looks like this (error en la tarea AzureCLI@2):


trigger:
- master

pool:
  vmImage: 'ubuntu-latest' 

variables:
  tag: 1.0.0-$(Build.BuildId)
  buildConfiguration: 'Release'
  acrINT: 'XXXXX'
  aKSINT: 'XXXXX'
  azureSubscriptionEndpoint: 'XXXXXX'
  azureContainerRegistry: 'XXXXX'
  dockerComposeFile: 'docker-compose.yml'
  resourceGroupName: ''
  clusterName: ''


stages:
- stage: Build
  displayName: Build 
  jobs:
  - job: Build_code
    displayName: Build 
    pool:
      vmImage: 'ubuntu-latest'

    steps:
    - task: UseDotNet@2
      displayName: 'Install .NET Core SDK'
      inputs:
        version: 8.x
        performMultiLevelLookup: true
        includePreviewVersions: true # Required for preview versions

    - task: DotNetCoreCLI@2
      inputs:
        command: 'build'
        projects: '**/*.csproj'

    - task: DockerCompose@0
      inputs:
        workingDirectory: '$(System.DefaultWorkingDirectory)'
        containerregistrytype: 'Azure Container Registry'
        azureSubscription: '$(azureSubscriptionEndpoint)'
        azureContainerRegistry: '$(azureContainerRegistry)'
        dockerComposeFile: '$(dockerComposeFile)'
        additionalDockerComposeFiles: 'docker-compose.override.yml'
        dockerComposeFileArgs: 'DOCKER_BUILD_SOURCE='
        action: 'Run a Docker Compose command'
        dockerComposeCommand: 'build --parallel'

    - task: AzureCLI@2
      displayName: Docker Build
      inputs:
        azureSubscription: '$(azureSubscriptionEndpoint)'
        scriptType: 'bash'
        scriptLocation: 'inlineScript'
        inlineScript: |
          docker build -t service:$(tag) .
          docker save service:$(tag) -o service_$(tag).tar


    - task: PublishPipelineArtifact@1
      inputs:
        targetPath: '$(Pipeline.Workspace)'
        artifact: 'service-artifact'
        publishLocation: 'pipeline'`

Ejecutar el Pipeline y que se cree el servicio
azure-devops azure-cli2
1个回答
0
投票

错误表示在默认工作目录下找不到

Dockerfile
。请按照以下项目进行检查:

  1. Docker 区分大小写。确保

    Dockerfile
    的名称与
    Dockerfile
    完全相同(不带任何扩展名),而不是
    dockerFile

  2. 检查哪个

    repo
    branch
    正在运行管道构建,确认
    Dockerfile
    存在于正确的存储库和分支上。

如果问题仍然存在,建议在构建之前找到 Dockerfile(

find . -name "Dockerfile" 
):

如果 Dockerfile 不在根目录下,您可以为任务添加

workingDirectory

- task: AzureCLI@2
  displayName: Docker Build
  inputs:
    azureSubscription: '$(azureSubscriptionEndpoint)'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      find . -name "Dockerfile"             # try to find the Dockerfile before build.
      docker build -t service:$(tag) .
      docker save service:$(tag) -o service_$(tag).tar
    workingDirectory: Docker                # the Dockerfile folder
© www.soinside.com 2019 - 2024. All rights reserved.