首页 > 解决方案 > 如何为 Azure 认知服务中的现有 docker 容器创建 IoT Edge 模块?

问题描述

我目前拥有 Azure Cognitive Services for Speech-To-Text 作为 docker 容器的公共预览访问权限。这允许容器在 IoT Edge 设备上运行,而不是访问云来执行此服务。这个公开预览版附带安装说明,显示我可以下载其中一个容器的现有 docker 映像并使用“docker run”从 CLI 运行它。

但我不想在我的 IoT Edge 设备上手动运行 docker 容器。我希望它自动部署到我的 IoT Edge 设备并自动开始运行。为了做到这一点,我认为它需要作为物联网边缘模块存在。我的理解正确吗?

所以我的问题更像是一个指导性问题。我是否需要创建自己的 IoT Edge 模块来利用此 ACS docker 容器,或者是否有其他方法可以自动将其部署到我的 IoT Edge 设备并让它自动开始运行?

我无法在线找到将现有 docker 容器部署到 IoT Edge 设备的任何文档或示例。任何指导将不胜感激!

标签: speech-to-textazure-cognitive-servicesazure-iot-edge

解决方案


好的,经过大量挖掘,我找到了解决方案。无论您做什么,都不要在网上搜索“从 docker 容器创建 iot 模块”或类似的任何完全有意义的内容。相反,我必须在 docker run 上搜索 Azure 认知服务接受 EULA 的特定内容(即,我必须搜索“iot edge module docker \"eula\"")。请注意 eula 周围的引号以确保它在搜索结果中。我偶然发现了这篇文章

使用本文的指导,我将详细重复我在此处所做的操作,以防链接失效。

  1. 在 VS Code 中,创建一个新的 IoT Edge 解决方案
  2. 在您的解决方案中,添加一个新的 IoT Edge 模块 a。当提示输入要创建的模块类型时,选择“选择现有模块(输入完整 URL)”
  3. 如果您查看您的 deployment.template.json 文件,您现在将看到“registryCredentials”的一个新元素,该元素已添加到您的 edgeAgent 详细信息中。相应地填写地址、用户名和密码。
  4. 如果您尚未这样做,请在线创建您的认知服务资源以获取端点 URL 和 ApiKey。记下这些值。
  5. 在 deployment.template.json 文件中,在新模块的配置设置下,添加以下内容。

    "settings": {
      "image": "containerpreview.azurecr.io/microsoft/cognitive-services-speech-to-text:latest",
      "createOptions": 
      {                       
        "Cmd": [
            "Eula=accept",
          "Billing={enter-your-EndpointURL}",
            "ApiKey={enter-your-ApiKey}"
        ],
        "HostConfig": {
          "PortBindings": {
          "5000/tcp": [
          {
            "HostPort": "5000"
          }
          ] 
          }
          }
        }
    

    这等效于使用以下参数从命令行运行“docker run”:

docker run --rm -it -p 5000:5000 --memory 4g --cpus 1 \ containerpreview.azurecr.io/microsoft/cognitive-services-recognize-text \ Eula=accept \ Billing={BILLING_ENDPOINT_URI} \ ApiKey={BILLING_KEY}

  1. 现在“构建并推送您的 IoT Edge 解决方案”,然后是“为单个设备创建部署”。在您的目标 IoT Edge 设备上,您现在应该会看到通过 CLI“iotedge list”安装并运行的模块。

更新:2020/05/01

在向 MSFT 提交更好文档的请求后,他们更新了他们的文档站点以包含有关如何修改 deployment.template.json 文件以匹配 docker 命令行参数的信息:https ://docs.microsoft.com/en-us /azure/iot-edge/how-to-use-create-options


推荐阅读