Доступ к raspistill / pi камере внутри контейнера Docker - PullRequest
0 голосов
/ 23 февраля 2019

Я пробовал свое приложение 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?Заранее спасибо.

1 Ответ

0 голосов
/ 06 марта 2019

Попробуйте заменить это из файла Docker:

RUN echo "/opt/vc/lib" > /etc/ld.so.conf.d/00-vcms.conf \
&& ldconfig

на следующее:

ADD 00-vmcs.conf /etc/ld.so.conf.d/
RUN ldconfig

и создайте файл 00-vmcs.conf :

/opt/vc/lib

Редактировать :

Если это все еще не работает, попробуйте загрузить изображение Raspbian Docker, например, balenalib / rpi-raspbian :

FROM balenalib/rpi-raspbian
...