我正忙于开发一款 IoT 类型的应用程序,该应用程序需要通过串行端口连接的物理硬件。我们选择使用 Azure IoT Edge 架构在本地 PC 上部署应用程序。这有助于我们的 DevOps 周期。
要使用 Azure IoT Edge,我们的应用程序必须容器化,因此公开串行端口可能是一个相当大的挑战。该 PC 是 64 位的,运行的是 Ubuntu 20.04,并且有多个 USB、串行和 LAN 端口,我们可以将设备插入其中。
我们一直关注着这个伟大的Losant 的教程进行设置。
我们的容器创建选项如下:
{
"HostConfig": {
"PortBindings": {
"80/tcp": [
{
"HostPort": "5000"
}
]
},
"Privileged": true,
"Volumes": {
"/dev": {}
}
}
}
我们将应用程序的端口 80 映射到 PC 上的端口 5000,并按照上面的教程链接中的建议设置卷和特权标签。
设备本身是通过 USB 连接的,因此我们必须在 Ubuntu 20.04 上安装驱动程序FTDI 网站。
我的问题:
在某些情况下,我们的应用程序会找到串行端口 (tty/USB0),但大多数情况下不会。如果我们在设备连接的情况下关闭 PC 的电源,应用程序通常会找到该设备。我们如何更改 PC 设置 / docker 设置 / 应用程序设置,以便它始终找到该设备?
注意:这是这个问题在 StackOverflow 上,因为我不确定这个问题是否属于那里或这里。
答案1
这实际上只是对卷语法的不幸误用。此 docker 链接很有帮助。
解析后的语法如下:
{
"HostConfig": {
"Binds": [
"/dev:/dev"
],
"PortBindings": {
"80/tcp": [
{
"HostPort": "5000"
}
]
},
"Privileged": true
}
}
解决之后一切都按预期进行。