Код Visual Studio - образ операционной системы linux нельзя использовать на этой платформе ошибка

Я слежу за учебником, размещенным здесь:

https://docs.microsoft.com/en-us/azure/iot-edge/tutorial-deploy-function

Я попробовал Build and Push IoT Edge Solution, перечисленный в шаге № 6 шага Build your IoT Edge solution, и получил следующую ошибку:

Шаг 1/3: ИЗ mcr.microsoft.com/azureiotedge-functions-binding:1.0.0-linux-amd64 1.0.0-linux-amd64: извлечение из операционной системы Linux с привязкой к функциям azureiotedge невозможно на этой платформе

Итак, я заметил в папке модуля CSharpFunction несколько объектов Dockerfile. 1 - это Windows, а остальные 3 - Linux, включая тот, который вызвал ошибку. Поскольку все файлы докеров и команда для сборки и отправки генерируются приложением, какие настройки или другие параметры доступны, чтобы заставить его использовать правильный контейнер Docker для сборки и / или развертывания? TIA


person ds_practicioner    schedule 12.08.2018    source источник


Ответы (1)


Оказалось, что искомый параметр находится в самом файле deployment.template.json. В папке проекта VS Code создал четыре файла докеров:

Dockerfile.amd64

Dockerfile.amd64.debug

Dockerfile.arm32v7

Dockerfile.windows-amd64

В словаре CSharpFunction есть ключ изображения, который должен относиться к контейнеру. Значение по умолчанию было:

"${MODULES.CSharpFunction.amd64}"

Изменив его на:

"${MODULES.CSharpFunction.windows-amd64}"

Устраняет проблему.

person ds_practicioner    schedule 12.08.2018
comment
Хорошая находка. Еще одна вещь, на которую следует обратить внимание в этом руководстве, - это шаг №3. Вы можете назвать имя модуля в любом формате, например, в верблюжьей нотации. Однако, когда вы вводите имя репозитория образов, вы должны сначала ввести {имя сервера реестра} / имя модуля. Имя модуля должно быть в нижнем регистре. - person skmansfield; 29.12.2018