У меня есть проект узла, работающий в контейнере Docker из Ubuntu, и хост-машина также Ubuntu.
В моем проекте узла (написано в машинописном тексте) я пытаюсь использовать последовательный порт npmlibrary.
https://www.npmjs.com/package/serialport
У меня есть строки:
include * as serialport from 'serialport'
// further down
serialport.list((err, list) => {
// after checking for errors
console.log(list);
});
Теперь, если я просто запускаю этот код на хост-машине, я получаю список результатов смного информации. Например, для одного устройства:
{ manufacturer: 'Prolific Technology Inc.',
serialNumber: undefined,
pnpId: 'usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0',
locationId: undefined,
vendorId: '067b',
productId: '2303',
comName: '/dev/ttyUSB0' }
Но когда я запускаю тот же код в док-контейнере, я получаю следующее:
{ manufacturer: undefined,
serialNumber: undefined,
pnpId: undefined,
locationId: undefined,
vendorId: undefined,
productId: undefined,
comName: '/dev/ttyUSB0' }
Как вы можете видеть, большинство изинформация возвращается как неопределенная.
Это делается, давая привилегированному статусу Docker-контейнера и доступ к тому / dev. Например, в docker-compose
myapp:
image: myappimage
ports: 8999:8999
volumes:
- /dev:/dev
- ./:/myappdir
privileged: true
command: ./scripts/runApp.sh
Или работает
docker run --privileged -v /dev:/dev -v /path/to/my/app:/app node:4.4.0 ./scripts/runApp.sh
Приложение запускается и определяет, какие последовательные порты доступны в / dev, но информация об устройстве не извлекается.
Эта ссылка:
Контейнер Docker не видит устройство с последовательным портом
Предполагает, что это может быть даже невозможно сделать, по крайней мерене для Mac. Это возможно на Linux-машине?
Любая помощь будет принята с благодарностью.