使用 iotedgehubdev 生成的 iothub 模块由于“存储库名称必须小写”而无法在本地运行

问题描述 投票:0回答:2

当我尝试运行使用 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.

但是我似乎无法找到到底是什么导致了这个错误。

  • 我已经尝试使用 ModBusModule 拼写全部小写,但这并没有解决问题。我还尝试将图像路径指定为 "${MODULES<../ModBusModule.debug>}""${MODULES<../ModBusModule>}""${MODULDIR<../ModBusModule.debug>}""${MODULDIR<../ModBusModule>}" .
  • 我还尝试过使用托管的 Azure 容器寄存器。

但是这些事情并没有解决我遇到的问题。 有谁知道这个问题可能是什么?显然,它与存储库名称相关,但我不知道 iotedgehubdev 设置了 MODULES 的哪个部分或位置。

提前致谢!

azure docker visual-studio-code azure-iot-hub azure-iot-edge
2个回答
0
投票

我按照这个 MSDOCgit 使用 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": {}
            }
          }
        }
      }
    }

enter image description here

enter image description here

  • 对于具有 Modbus 模板的 Azure IoT Edge 模块,请参阅此 git .

 " "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": ""
            }
          }
        }
      }
    }

0
投票

因此,经过一些调试并分配不同项目类型和旧 iotedge 项目的故障排除后。我已经找到了问题所在。

为csharp生成新模块时,缺少以下文件,需要手动添加。

  1. 模块的所有 docker 文件
  2. 模块.json

将这些文件添加到输出文件中后,图像将被正确设置,并且 docker-compose 错误将停止。

© www.soinside.com 2019 - 2024. All rights reserved.