我正在尝试部署一个简单的自定义Azure IoT边缘模块,该模块读取我的raspberry pi(运行Raspbian OS)中的文件,并使用Windows 10 PC上的VS Code将其发送到云中。
但是,在树莓派上运行的自定义模块似乎存在问题。
我通过以下方式在部署JSON文件中为docker容器设置模块配置:
"PythonModuleNest": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "${MODULES.PythonModuleNest.arm32v7}",
"createOptions": "{\"HostConfig\":{\"Devices\": [{\"PathOnHost\": \"/home/pi/Offering2/test/Nest\",\"PathInContainer\": \"/home/pi/Offering2/test/Nest\",\"CgroupPermissions\": \"rwm\"}]}}"
}
}
当我将“图像”选项设置为"${MODULES.PythonModuleNest.arm32v7}”
并尝试使用VScode进行构建和推送时,我在集成终端中收到此错误:
Step 3/9 : RUN apt-get update && apt-get install -y --no-install-recommends libboost-python1.55.0 && rm -rf /var/lib/apt/lists/*<o:p></o:p>
---> Running in f68e79aa957f
standard_init_linux.go:190: exec user process caused "exec format error"
The command '/bin/sh -c apt-get update && apt-get install -y --no-install-recommends libboost-python1.55.0 && rm -rf /var/lib/apt/lists/*' returned a non-zero code: 1
因此,我还尝试将其更改为默认值"${MODULES.PythonModuleNest.amd64}"
。这次,它已构建并被推送到Azure容器存储库,但是当我将其部署到边缘设备时,它无法正常工作。在蔚蓝门户上,它显示“退避”状态和“ 500:边缘运行时错误”。尽管edgehub,edgeagent和模拟温度传感器模块运行正常,但它在边缘上不起作用,并且在运行iotedge list
时仅显示“失败”。当我尝试其他图像设置(包括“ image”:“ first.azurecr.io/ pythonmodulenest:0.0.1-amd64”,“ image”:“ first.azurecr.io/pythonmodulenest:0.0.1-arm32v7)时,遇到相同的问题”和“ mcr.microsoft.com/azureiotedge-functions-binding:1.0.0-linux-arm32v7”。当我从教程中部署示例CSharp模块时,也会出现“退避”状态。https://docs.microsoft.com/en-us/azure/iot-edge/tutorial-deploy-function。
请您在理解问题可能是什么以及如果我的“ createOptions”配置足以读取Raspberry Pi上的文件时提供帮助,我将不胜感激。我还应该提到我正在使用python进行开发。