Я пытаюсь создать конвейер развертывания для развертывания моего образа в кластер Kubernetes. Первым шагом в этом процессе является создание образа на основе файла Docker. Используемый мной файл Docker был сгенерирован из Visual Studio, когда я добавил поддержку Docker, и успешно создает изображение, щелкнув правой кнопкой мыши по изображению Docker и выбрав его для создания. Когда я настраиваю конвейер Azure, создание образа Docker завершается ошибкой, как только он пытается построить реальное решение. Предыдущий шаг захватывает все исходные файлы, но затем завершается неудачно при создании образа докера с

[error]COPY failed: stat/var/lib/docker/tmp/docker-builder158012929/DockerTest/DockerTest.csproj:
 no such file or directory

[error]/usr/bin/docker failed with return code: 1

Ниже приведен файл Docker, сгенерированный из Visual Studio, и на него ссылается этап конвейера Azure для создания образа Docker.

 FROM mcr.microsoft.com/dotnet/core/runtime:2.2-stretch-slim AS base

 WORKDIR /app   
 FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS
 build 

 WORKDIR /src      
 COPY ["DockerTest/DockerTest.csproj", "DockerTest/"]      
 RUN dotnet restore "DockerTest/DockerTest.csproj"      
 COPY . .      
 WORKDIR "/src/DockerTest"      
 RUN dotnet build "DockerTest.csproj" -c Release -o /app  

 FROM build AS publish      
 RUN dotnet publish "DockerTest.csproj" -c Release -o /app

 FROM base AS final      
 WORKDIR /app      
 COPY --from=publish /app .      
 ENTRYPOINT ["dotnet", "DockerTest.dll"]

enter image description here

## [раздел] Начало: создание образа контейнера
================================================== ============================ Задача: Docker Описание: сборка, тегирование, отправка или запуск образов Docker, или запустите команду Docker. Задачу можно использовать с Docker или контейнером Azure реестр. Версия: 0.150.6 Автор: Microsoft Corporation Справка: [Дополнительная информация] https://go.microsoft.com/fwlink/?linkid=848006 < / a>)
================================================== ============================ [команда] / usr / bin / docker build -f
/ главная / vsts / работа / 1 / с / DockerTest / Dockerfile -t ihacontainers.azurecr.io/dockertest:6 / home / vsts / work / 1 / s / DockerTest Отправка контекста сборки демону Docker 6.144kB Шаг 1/15: FROM mcr.microsoft.com/dotnet/core/runtime:2.2-stretch-slim AS base 2.2-stretch-slim: получение из dotnet / core / runtime 743f2d6c1f65: получение слоя fs 074da88b8de0: получение слоя fs ac831735b47a: получение слой fs 3adcc844418d: получение слоя fs 3adcc844418d: ожидание ac831735b47a: полная загрузка 743f2d6c1f65: проверка контрольной суммы 743f2d6c1f65: полная загрузка 074da88b8de0: проверка контрольной суммы 074da88b8de0: полная загрузка 3adcc844418d: проверка контрольной суммы zadcc844418d: Полная загрузка 743f2d6c1f65: Полная загрузка 074da88b8de0: Полная вытяжка ac831735b47a: Полная вытяжка 3adcc844418d: Получить полный дайджест: sha256: 066c31b113b0a20e6155d3bd8a314563c688d2ec31c11d7e551af5bc2595f30c Статус: загружено новое изображение для mcr.microsoft.com/dotnet/core/runtime:2.2-stretch-slim ---> c0f9ab44ecc1 Шаг 2/15: WORKDIR / app ---> Запуск в 6d1a5f5600dd Удаление промежуточного контейнера 6d1a5f5600dd ---> 527fcebeaf1f Step 15/3: ИЗ mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build 2.2-stretch: получение из dotnet / core / sdk c5e155d5a1d1: получение слоя fs 221d80d00ae9: получение слоя fs 4250b3117dca: получение слоя fs 3b7ca19181b2: получение слоя fs 3466298fc231: получение слоя fs 310737d73ed1: получение слоя fs dc981de74fae: получение слоя fs 3b7ca19181b2: Ожидание 3466298fc231: Ожидание 310737d73ed1: Ожидание dc981de74fae: Ожидание 4250b3117dca: Проверка контрольной суммы 4250b3117dca: Скачать полную 221d80d00ae9: Проверка контрольной суммы 221d80d00ae9: Скачать полную версию 3466298fc231: Проверка контрольной суммы 3466298fc231: Скачать полный c5e155d5a1d1: Проверка контрольной суммы c5e155d5a1d1: Скачать полную версию 3b7ca19181b2: Проверка контрольной суммы 3b7ca19181b2: Скачать полную c5e155d5a1d1: Pull complete 221d80d00ae9: Pull Complete 310737d73ed1: Проверка контрольной суммы 310737d73ed1: Скачать complete 4250b3117dca: полное извлечение dc981de74fae: проверка контрольной суммы dc981de74fae: Полная загрузка 3b7ca19181b2: Полная загрузка 3466298fc231: Полная вытяжка 310737d73ed1: Полная вытяжка dc981de74fae: Получить полный дайджест: sha256: 222cc0bb0bc93875ee0f6be626b2838beea838f65e53653e07c33eb9d00b0163 Статус: загружено новое изображение для mcr.microsoft.com/dotnet/core/sdk:2.2-stretch ---> Шаг e4747ec2aaff 15 апреля: WORKDIR / src ---> Запуск в a7ebcac87f68 Удаление промежуточный контейнер a7ebcac87f68 ---> d7541674a9da Шаг 5/15: КОПИРОВАНИЕ ["DockerTest / DockerTest.csproj", "DockerTest /"] Ошибка КОПИРОВАНИЯ: статистика /var/lib/docker/tmp/docker-builder158012929/DockerTest/DockerTest.csproj:no такой файл или каталог

## [ошибка]. КОПИЯ не удалась: stat / var / lib / docker / tmp / docker-builder158012929 / DockerTest / DockerTest.csproj: нет такой файл или каталог

## [ошибка] / ошибка usr / bin / docker с кодом возврата: 1 ## [раздел] Окончание: создание образа контейнера

16
Geekn 31 Май 2019 в 02:18

3 ответа

Лучший ответ

[ошибка] Копирование не выполнено: stat / var / lib / docker / tmp / docker-builder158012929 / DockerTest / DockerTest.csproj: такого файла или каталога нет

Согласно этому сообщению об ошибке, произошла ошибка в строке вашего dockerfile: COPY ["DockerTest/DockerTest.csproj", "DockerTest/"].

Сначала убедитесь, что вы не использовали файл .dockerignore для исключения этого файла: DockerTest/DockerTest.csproj, который должен существовать в каталоге, из которого вы запускаете сборку.

Если он не игнорируется файлом .dockerignore, вам необходимо принять во внимание уровень расположения вашего файла dockerfile.

Файл DockerTest.csproj не должен помещаться на нижний уровень пути исходного файла. Вам нужно изменить источник контекста, переместить его на более высокий уровень. Поэтому измените ваш dockerfile вручную как:

COPY ["DockerTest.csproj", "DockerTest/"]
6
Merlin Liang - MSFT 31 Май 2019 в 06:26

Я решил проблему, установив для buildContext значение $ (Build.Repository.LocalPath), используя тот же файл docker, что и в Visual Studio, без корректировки путей:

В YAML-Konfiguration я добавил следующую строку:

buildContext: '$(Build.Repository.LocalPath)'
9
Martin 24 Сен 2019 в 06:30

Эта проблема возникает, когда вы генерируете поддержку Docker через Visual Studio (по крайней мере v16.3.9), и вы используете этот сгенерированный проект в конвейере Azure с предопределенным шаблоном конвейера Docker либо старомодным способом «все для щелчка», так называемым классический редактор или новый простой в использовании 4-шаговый способ, называемый современным редактором .

Изменение в сгенерированном файле от

COPY ["DockerTest/DockerTest.csproj", "DockerTest/"]

К

COPY ["DockerTest.csproj", "DockerTest/"]

Решить проблему с помощью конвейера Azure, но он сломает локальную сборку в Visual Studio.

Добавление

buildContext: '$(Build.Repository.LocalPath)'

К файлу YAML, который был сгенерирован современным редактором, нарушит задачу сборки. Шаблон, который используется в современном редакторе, опирается на контекст сборки по умолчанию, и анализатор не распознает команду buildContext.

YAML file from the new editor

Единственно возможный способ решения этой проблемы - переопределить контекст сборки по умолчанию . Это переопределение сохранит функциональность сборки либо в Visual Studio, либо в конвейере Azure.

Контекст сборки может быть переопределен в задаче образа сборки в классическом редакторе.

Fixing the build problem in the build image task.

3
KUTlime 18 Ноя 2019 в 13:46