当我尝试运行使用 Visual Studio 代码的 iotedgehubdev 插件生成的 iothub 模块项目时,我遇到了问题。
生成的调试模板如下:
{
"$schema-template": "4.0.0",
"modulesContent": {
"$edgeAgent": {
"properties.desired": {
"schemaVersion": "1.4",
"runtime": {
"type": "docker",
"settings": {
"minDockerVersion": "v1.25",
"loggingOptions": "",
"registryCredentials": {}
}
},
"systemModules": {
"edgeAgent": {
"type": "docker",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-agent:1.4",
"createOptions": {}
}
},
"edgeHub": {
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.4",
"createOptions": {
"HostConfig": {
"PortBindings": {
"5671/tcp": [
{
"HostPort": "5671"
}
],
"8883/tcp": [
{
"HostPort": "8883"
}
],
"443/tcp": [
{
"HostPort": "443"
}
]
}
}
}
}
}
},
"modules": {
"ModBusModule": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "${MODULES.ModBusModule.debug}",
"createOptions": {}
}
},
"SimulatedTemperatureSensor": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.4",
"createOptions": {}
}
}
}
}
},
"$edgeHub": {
"properties.desired": {
"schemaVersion": "1.4",
"routes": {
"ModBusModuleToIoTHub": "FROM /messages/modules/ModBusModule/outputs/* INTO $upstream",
"sensorToModBusModule": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/ModBusModule/inputs/input1\")"
},
"storeAndForwardConfiguration": {
"timeToLiveSecs": 7200
}
}
}
}
}
我收到的错误如下:
PS C:\projects\*redacted*\*redacted*\iot-edge-module\*redacted*> & "c:\Users\*redacted*\.vscode\extensions\vsciot-vscode.azure-iot-edge-1.25.11\iotedgehubdev\0.14.18\iotedgehubdev" start -d "c:\projects\*redacted*\*redacted*\iot-edge-module\*redacted*\config\deployment.debug.amd64.json" -v
edgeHub image version is ignored in solution mode.
Network azure-iot-edge-dev is external, skipping
Pulling edgeHubDev ... done
Docker Compose is now in the Docker CLI, try `docker compose up`
ERROR: invalid reference format: repository name must be lowercase
ERROR: Error while executing command: docker-compose -f C:\Users\*redacted*\AppData\Local\.iotedgehubdev\data\data\docker-compose.yml up. Command '['docker-compose', '-f', 'C:\\Users\\*redacted*\\AppData\\Local\\.iotedgehubdev\\data\\data\\docker-compose.yml', 'up']' returned non-zero exit status 1.
但是我似乎无法找到到底是什么导致了这个错误。
但是这些事情并没有解决我遇到的问题。 有谁知道这个问题可能是什么?显然,它与存储库名称相关,但我不知道 iotedgehubdev 设置了 MODULES 的哪个部分或位置。
提前致谢!
我按照这个 MSDOC 和 git 使用 Visual Studio Code 模拟 Edge 的示例模块。
"SimulatedTemperatureSensor": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.4",
"createOptions": {}
}
},
"SampleFunction": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "${MODULES.SampleFunction}",
"createOptions": {}
}
}
}
}
}
" "edgeHub": {
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.0",
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
}
}
},
"modules": {
"modbus": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "${MODULES.iotedgeModbus.amd64}",
"createOptions": ""
}
}
}
}
}
因此,经过一些调试并分配不同项目类型和旧 iotedge 项目的故障排除后。我已经找到了问题所在。
为csharp生成新模块时,缺少以下文件,需要手动添加。
将这些文件添加到输出文件中后,图像将被正确设置,并且 docker-compose 错误将停止。