我一直在试用我的Node.js应用程序在一个树莓Pi 3模型B使用码头,它运行没有任何麻烦。
当应用程序依赖(raspicam)要求raspistill使用相机拍照时,问题就出现了。Raspberry正在运行Debian拉伸和pi相机配置和测试。但是当我通过Docker运行这个应用程序时,我无法访问它。
基本上,我使用这个Dockerfile在win10 64位计算机上构建了Desktop映像:
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]
我得到:
错误:产生/opt/vc/bin/raspistill
经过一些研究之后,我还试着用:
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容器中访问pi摄像机了吗?提前谢谢。
发布于 2019-10-19 17:47:35
我也遇到了同样的问题,试图从码头集装箱的相机接口。通过这个线程中的建议,我设法让它使用下面的dockerfile。
FROM node:12.12.0-buster-slim
EXPOSE 3000
ENV PATH="$PATH:/opt/vc/bin"
RUN echo "/opt/vc/lib" > /etc/ld.so.conf.d/00-vcms.conf
COPY "node_modules" "/usr/src/app/node_modules"
COPY "dist" "/usr/src/app"
CMD ldconfig && node /usr/src/app/app.js这里有三个要点:
/opt/vc/bin添加到您的路径中,以便您可以在不引用完整路径的情况下调用raspistill。/opt/vc/lib添加到您的配置文件中,以便raspistill能够找到它所需的所有依赖项。ldconfig),而不是在构建时。最后一点是安东的解决方案不起作用的主要原因。ldconfig需要在正在运行的容器中执行,所以要么使用类似的方法来挖掘,要么使用entrypoint.sh文件代替。
发布于 2019-03-05 21:57:20
尝试从Dockerfile中替换以下内容:
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映像,例如balenalib/rpi-raspbian
FROM balenalib/rpi-raspbianhttps://stackoverflow.com/questions/54842833
复制相似问题