拉取自定义 nodeJS 模块的 docker 图像的 Azure IOT edge 错误
Azure IOT edge error pulling docker image of custom nodeJS module
您好,我正在制作一个 Azure IOT 边缘网关,我正在尝试在其上安装自定义模块,但出现此错误:
调用创建模块 serverModule 时出错:无法创建模块 serverModule
原因:没有这样的图像:MyDockerAzureContainerServer/serverModule:0.0.1-amd64) ....
但是如果我运行
docker拉MyDockerAzureContainerServer/serverModule:0.0.1-amd64
有效!
顺便说一句:我正在使用 winndows10 设备 运行ning docker Linux 容器
我真的不明白谢谢你的帮助。
deployment.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
}
}
}
}
}
(英语不是我的母语抱歉)
我终于设法运行了:
我将 docker 配置为 运行 windows 容器,并创建了一个 docker 文件。windows-amd64 on I 运行 基本 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" ]
完成后,您需要将此文件添加到已知平台,为此修改项目的 module.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"
}
最后你需要修改 deployment.template.json 中的这一行:
[...]
"modules": {
"{you're Module}": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "${MODULES.{you're Module}.Windows-amd64}",
"createOptions": {}
}
}
}
[...]
它应该 运行 没问题。
请注意,我 运行 现在是 Windows 机器 运行 宁 docker Windows 上的 Windows 容器上的 NodeJS 应用程序。
我留下这个答案,如果它可以帮助任何人,如果您有任何问题,请随时与我联系。
您好,我正在制作一个 Azure IOT 边缘网关,我正在尝试在其上安装自定义模块,但出现此错误:
调用创建模块 serverModule 时出错:无法创建模块 serverModule 原因:没有这样的图像:MyDockerAzureContainerServer/serverModule:0.0.1-amd64) ....
但是如果我运行
docker拉MyDockerAzureContainerServer/serverModule:0.0.1-amd64
有效!
顺便说一句:我正在使用 winndows10 设备 运行ning docker Linux 容器
我真的不明白谢谢你的帮助。
deployment.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
}
}
}
}
}
(英语不是我的母语抱歉)
我终于设法运行了:
我将 docker 配置为 运行 windows 容器,并创建了一个 docker 文件。windows-amd64 on I 运行 基本 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" ]
完成后,您需要将此文件添加到已知平台,为此修改项目的 module.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"
}
最后你需要修改 deployment.template.json 中的这一行:
[...]
"modules": {
"{you're Module}": {
"version": "1.0",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "${MODULES.{you're Module}.Windows-amd64}",
"createOptions": {}
}
}
}
[...]
它应该 运行 没问题。
请注意,我 运行 现在是 Windows 机器 运行 宁 docker Windows 上的 Windows 容器上的 NodeJS 应用程序。
我留下这个答案,如果它可以帮助任何人,如果您有任何问题,请随时与我联系。