Я пробовал свое приложение Node.js на Raspberry Pi 3 Model B, используя Docker, и оно работает без проблем.
Проблема возникает, когда зависимость приложения (raspicam) требует raspistill
, чтобы использовать камеру для съемки фотографии.Raspberry работает под управлением Debian Stretch, а пи-камера настроена и протестирована.Но я не могу получить к нему доступ при запуске приложения через Docker.
По сути, я создаю образ с помощью Docker Desktop на 64-битной машине win10, используя этот Dockerfile:
FROM arm32v7/node:10.15.1-stretch
ENV PATH /opt/vc/bin:/opt/vc/lib:$PATH
RUN echo "/opt/vc/lib" > /etc/ld.so.conf.d/00-vcms.conf \
&& ldconfig
# Create the app directory
ENV APP_DIR /home/app
RUN mkdir $APP_DIR
WORKDIR $APP_DIR
# Copy both package.json and package-lock.json
COPY package*.json ./
# Install app dependencies
RUN npm install
# Bundle app source
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
Затем в Raspberry,если я потяну изображение и запусту его с:
docker run --privileged --device=/dev/vchiq -p 3000:3000 [my/image:latest]
Я получу:
Ошибка: spawn / opt / vc / bin / raspistill ENOENT
После некоторых исследований я также попытался запустить с:
docker run --privileged -v=/opt/vc/bin:/opt/vc/bin --device=/dev/vchiq -p 3000:3000 [my/image:latest]
И с этой командой я получаю:
stderr: / opt / vc / bin / raspistill: ошибка при загрузке общих библиотек: libmmal_core.so: не удается открыть файл общего объекта: нет такого файла или каталога
Может кто-нибудь поделиться своими мыслями о том, что делают измененияЯ должен сделать в Dockerfile, чтобы я мог получить доступ к пи камеру из контейнера Docker?Заранее спасибо.