Ошибка края IOT Azure при извлечении образа докера пользовательского модуля nodeJS - PullRequest
0 голосов
/ 29 мая 2019

Здравствуйте, я создаю пограничный шлюз Azure IOT и пытаюсь установить на него пользовательский модуль, но у меня есть эта ошибка:

Ошибка при вызове Создать модуль serverModule: не удалось создать модуль serverModule вызвано: Нет такого изображения: MyDockerAzureContainerServer / serverModule: 0.0.1-amd64) ....

но если я бегу

docker pull MyDockerAzureContainerServer / serverModule: 0.0.1-amd64

это работает!

Кстати: я работаю на устройстве winndows10, использующем Docker-контейнеры Linux

Я действительно не понимаю, спасибо за любую помощь.

deploy.json:

{
    "$schema-template": "2.0.0",
    "modulesContent": {
        "$edgeAgent": {
            "properties.desired": {
                "schemaVersion": "1.0",
                "runtime": {
                    "type": "docker",
                    "settings": {
                        "minDockerVersion": "v1.25",
                        "loggingOptions": "",
                        "registryCredentials": {
                            "Server Name": {
                                "username": "$CONTAINER_REGISTRY_USERNAME_user",
                                "password": "$CONTAINER_REGISTRY_PASSWORD_userPW",
                                "address": "server Name.azurecr.io"
                            }
                        }
                    }
                },
                "systemModules": {
                    "edgeAgent": {
                        "type": "docker",
                        "settings": {
                            "image": "mcr.microsoft.com/azureiotedge-agent:1.0",
                            "createOptions": {}
                        }   
                    },
                    "edgeHub": {
                        "type": "docker",
                        "status": "running",
                        "restartPolicy": "always",
                        "settings": {
                            "image": "mcr.microsoft.com/azureiotedge-hub:1.0",
                            "createOptions": {
                                "HostConfig": {
                                    "PortBindings": {
                                        "5671/tcp": [
                                        {
                                            "HostPort": "5671"
                                        }
                                        ],
                                        "8883/tcp": [
                                        {
                                            "HostPort": "8883"
                                        }
                                        ],
                                        "443/tcp": [
                                        {
                                            "HostPort": "443"
                                        }
                                        ]
                                    }
                                }
                            }
                        }
                    }
                },
                "modules": {
                    "serverModule": {
                        "version": "1.0",
                        "type": "docker",
                        "status": "running",
                        "restartPolicy": "always",
                        "settings": {
                            "image": "${MODULES.serverModule}",
                            "createOptions": {}
                        }
                    }
                }
            }
        },
        "$edgeHub": {
            "properties.desired": {
                "schemaVersion": "1.0",
                "routes": {
                    "serverModuleToIoTHub": "FROM /messages/modules/serverModule/outputs/* INTO $upstream"
                },
                "storeAndForwardConfiguration": {
                    "timeToLiveSecs": 7200
                }
            }
        }
    }
}

(английский не мой родной язык извините)

1 Ответ

0 голосов
/ 07 июня 2019

Мне наконец-то удалось его запустить:

Я настроил свой докер для запуска контейнеров Windows и создал файл Docker. windows-amd64 в тот момент, когда я запускаю базовые команды установки npm для windows .

Dockerfile.windows-amd64:

FROM stefanscherer/node-windows:latest
RUN mkdir \app
WORKDIR /app

ONBUILD COPY package.json package.json
ONBUILD RUN npm install
ONBUILD RUN npm install {anny other specific dependencies} --production

ONBUILD COPY . .

CMD [ "node.cmd", "app.js" ]

После того, как вы сделаете это, вам нужно добавить этот файл на известных платформах, чтобы изменить модуль.json-файл вашего проекта и добавьте строку windows-amd64:

{
    "$schema-version": "0.0.1",
    "description": "",
    "image": {
        "repository": "{you're Server Name}.azurecr.io/{you're Module}",
        "tag": {
            "version": "0.0.1",
            "platforms": {
                "amd64": "./Dockerfile.amd64",
                "amd64.debug": "./Dockerfile.amd64.debug",
                "arm32v7": "./Dockerfile.arm32v7",
                "arm32v7.debug": "./Dockerfile.arm32v7.debug",
                "Windows-amd64": "./Dockerfile.windows-amd64"
            }
        },
        "buildOptions": []
    },
    "language": "javascript"
}

и, наконец, вам нужно изменить эту строку в файле deploy.template.json:

[...]
 "modules": {
     "{you're Module}": {
         "version": "1.0",
         "type": "docker",
         "status": "running",
         "restartPolicy": "always",
         "settings": {
             "image": "${MODULES.{you're Module}.Windows-amd64}",
             "createOptions": {}
         }
     }
 }
[...]

И это должноотлично работает.

Обратите внимание, что теперь я запускаю приложение NodeJS в контейнере Windows на машине Windows, на которой выполняется докер Windows.

Я оставляю этот ответ, если он может помочь кому-нибудь, не стесняйтесь связаться со мнойу вас есть какие-либо вопросы.

...