首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问码头集装箱内的raspistill / pi摄像机

访问码头集装箱内的raspistill / pi摄像机
EN

Stack Overflow用户
提问于 2019-02-23 14:53:40
回答 2查看 2.6K关注 0票数 6

我一直在试用我的Node.js应用程序在一个树莓Pi 3模型B使用码头,它运行没有任何麻烦。

当应用程序依赖(raspicam)要求raspistill使用相机拍照时,问题就出现了。Raspberry正在运行Debian拉伸和pi相机配置和测试。但是当我通过Docker运行这个应用程序时,我无法访问它。

基本上,我使用这个Dockerfile在win10 64位计算机上构建了Desktop映像:

代码语言:javascript
复制
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摄像机了吗?提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-19 17:47:35

我也遇到了同样的问题,试图从码头集装箱的相机接口。通过这个线程中的建议,我设法让它使用下面的dockerfile。

代码语言:javascript
复制
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

这里有三个要点:

  1. /opt/vc/bin添加到您的路径中,以便您可以在不引用完整路径的情况下调用raspistill
  2. /opt/vc/lib添加到您的配置文件中,以便raspistill能够找到它所需的所有依赖项。
  3. 在容器运行时重新加载配置文件(ldconfig),而不是在构建时。

最后一点是安东的解决方案不起作用的主要原因。ldconfig需要在正在运行的容器中执行,所以要么使用类似的方法来挖掘,要么使用entrypoint.sh文件代替。

票数 1
EN

Stack Overflow用户

发布于 2019-03-05 21:57:20

尝试从Dockerfile中替换以下内容:

代码语言:javascript
复制
RUN echo "/opt/vc/lib" > /etc/ld.so.conf.d/00-vcms.conf \
&& ldconfig

有以下几点:

代码语言:javascript
复制
ADD 00-vmcs.conf /etc/ld.so.conf.d/
RUN ldconfig

并创建文件00-vmcs.conf

代码语言:javascript
复制
/opt/vc/lib

编辑

如果仍然无法工作,请尝试加载一个Raspbian映像,例如balenalib/rpi-raspbian

代码语言:javascript
复制
FROM balenalib/rpi-raspbian
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54842833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档