Ошибка конвейера при выполнении задачи Azure CLI

Доброе утро:

В Azure DevOps я настраиваю конвейер, который на основе репозитория с докер-проектом (с файлом 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 с. ОШИБКА: не удалось решить: не удалось прочитать файл docker: открыть /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
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
122
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ошибка указывает на то, что 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

Спасибо за ответ. Возможно, проблема связана со сборкой Pipeline. Целью этого является сборка, создание образа Docker из репозитория Azure, где есть проект NetCore с помощью Docker-Compose, и загрузка службы в контейнер Azure. Я не уверен, что использую хорошие задачи. Какие три задачи можно использовать?

Alberto Puigdomenech 22.04.2024 10:29

Задача DockerCompose@0 содержит различные действия, поддерживает службы сборки и отправки служб. После сборки добавьте новый DockerCompose@0 для отправки в ACR. Однако это новая тема, не имеющая отношения к текущей проблеме в билете. Могу ли я узнать, решено ли выше Dockerfile not found? Рекомендуется создать новый запрос для нового запроса и поделиться ссылкой здесь, будем рады помочь.

wade zhou - MSFT 23.04.2024 05:23

Я все еще работаю над этим. Поскольку я пытаюсь сделать то, что вы мне сказали, я открою новую тему, если не смогу ее решить, и если смогу решить, я отвечу на эту. Заранее спасибо.

Alberto Puigdomenech 23.04.2024 10:56

Пожалуйста! Не стесняйтесь, дайте мне знать, если у вас есть какие-либо вопросы, рад помочь!

wade zhou - MSFT 23.04.2024 11:12

Теперь он находит Dockerfile, но не может выполнить команды. Эти команды работают локально, и если вы запустите Docker-Compose (DockerCompose@0), но если я запущу docker build -t service:$(tag) . в задаче AzureCLI@2 выдается следующая ошибка.

Alberto Puigdomenech 10.05.2024 15:34

Dockerfile:11 -------------------- 9 | ARG BUILD_CONFIGURATION=Выпуск 10 | РАБОЧИЙ ПАРАМЕТР /источник 11 | >>> КОПИРОВАТЬ ["GNF_Inventario/GNF_Inventario.csproj", "GNF_Inventario/"] 12 | ВЫПОЛНИТЬ восстановление dotnet "./GNF_Inventario/./GNF_Inventario.csproj" 13 | КОПИРОВАТЬ. . -------------------- ОШИБКА: не удалось решить: не удалось вычислить ключ кэша: не удалось вычислить контрольную сумму ссылки 584d62f5-11d9-4074-87e4-acacf60905a6::809ah34b92o8ga026wkrxi‌ ​y3c: "/GNF_Inventario/GNF_Inventario.csproj": не найден. Ошибка ответа демона: ссылка не существует.

Alberto Puigdomenech 10.05.2024 15:35

Другие вопросы по теме