Я пытаюсь заставить hotplug работать под Docker внутри nodejs.
Мое тестовое приложение nodejs:
// @ts-ignore
import usb from 'usb';
(async () => {
usb.on('attach', (device: any) => console.log("attache"));
usb.on('detach', (device: any) => console.log("detach"));
})();
Мой тестовый контейнер:
sudo docker run --rm -it --entrypoint bash -v /dev:/dev -v /var/run/udev:/var/run/udev -v $(pwd)/workdir:/app --privileged ubuntu:latest
Есть еще несколько пакетов, необходимых для того, чтобы все заработало (на данный момент это скрипт bash, в конце игры должен быть Dockerfile)
#!/bin/bash
apt update && apt-get install -y ca-certificates curl curl build-essential libgphoto2-dev libcups2-dev udev libudev-dev
curl -sL https://deb.nodesource.com/setup_13.x | bash -
apt -y install nodejs
npm i -g ts-node typescript
Чтобы временно все настроить.
В нынешнем виде, если я запускаю udevadm monitor
, получаю события и т. д. Но если я запускаю свой тестовый скрипт, никакие события не получаются.
Также, если я запускаю свое тестовое приложение вне докера, все работает как положено.
Кто-нибудь пробовал это раньше?
Спасибо
sudo docker run --rm -it --entrypoint bash -v /dev:/dev -v /var/run/udev:/var/run/udev -v $(pwd)/workdir:/app --privileged --net=host ubuntu:latest
Существует также решение с использованием ionotify: guidodiepen.nl/2016/05/ - person Kekec   schedule 07.07.2020