Как бы вы настроили стандартный докер-файл для каждого проекта с конвейером Azure для их обработки? - PullRequest
0 голосов
/ 03 апреля 2020

На данный момент у меня есть простая структура решения (проекты WebAPI, которые будут микросервисами) с генерируемыми по умолчанию файлами Docker для каждого проекта в решении, например:

Solution X
|    Project A
|    |    Dockerfile
|    Project B
|    |    Dockerfile
|    Project C
|    |    Dockerfile
|    Project D
|    |    Dockerfile
|    azure-pipeline.yml

С точки зрения разработки и отладки of view все работает (через "Docker" как средство запуска), но после создания с помощью мастера Azure первого конвейера для "Project A" моя сборка всегда завершается ошибкой при выполнении инструкции COPY на этапе сборки:

COPY ["Project A/ProjectA.csproj", "Project A/"]

С ошибкой из конвейера запустите как:

COPY failed: stat /var/lib/docker/tmp/docker-builder196561826/Project A/ProjectA.csproj: no such file or directory
##[error]COPY failed: stat /var/lib/docker/tmp/docker-builder196561826/Project A/ProjectA.csproj: no such file or directory

Я не эксперт по docker ни по azure, но я полагаю, что я настраиваю это решение неправильно чтобы совершить такую ​​вещь.

Что может быть лучше для настройки или исправления?

1 Ответ

1 голос
/ 06 апреля 2020

нет такого файла или каталога

Это очень распространенная ошибка, с которой сталкиваются люди после миграции проекта Docker из Visual studio в Azure Devops, даже если они могут построить docker очень успешно в локальной сети.

Это вызвано различными логами работы c между Visual Studio(local) и Azure Devops. Для локальных docker работает на Repos/solution level. НО , для Azure devops CI, он запускает docker в каталоге, где находится файл docker, который находится в project level. В настоящее время соответствующий путь, который отлично работает локально, больше не будет подходить для Azure devops.


Полагаю, вы, возможно, не захотите вносить изменения в свой файл Docker. Так что здесь вам просто нужно указать задачу build context in Docker:

Указать $(Build.Repository.LocalPath) для аргумента Docker 2.* Build context.

enter image description here

Проверьте мой предыдущий ответ .

...