gpt4 book ai didi

node.js - 访问 Docker 容器内的 raspistill/pi 相机

转载 作者:搜寻专家 更新时间:2023-10-31 23:26:02 24 4
gpt4 key购买 nike

我一直在使用 Docker 在 Raspberry Pi 3 Model B 上试用我的 Node.js 应用程序,它运行起来没有任何问题。

当应用程序依赖项 (raspicam) 需要 raspistill 使用相机拍照时,问题就来了。 Raspberry 正在运行 Debian Stretch 并且 pi 相机已配置和测试。但是在通过 Docker 运行应用程序时我无法访问它。

基本上,我使用这个 Dockerfile 在 win10 64 位机器上使用 Docker 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]

我得到:

Error: 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: error while loading shared libraries: libmmal_core.so: cannot open shared object file: No such file or directory

有人可以分享一些关于我必须对 Dockerfile 进行哪些更改以便我能够从 Docker 容器内部访问 pi 相机的想法吗?提前致谢。

最佳答案

我在尝试使用 docker 容器中的相机界面时遇到了同样的问题。有了这个线程中的建议,我已经设法让它与下面的 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

这里主要有3点:

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

最后一点是安东的解决方案不起作用的主要原因。 ldconfig 需要在正在运行的容器中执行,因此要么使用与我的类似的方法,要么改用 entrypoint.sh 文件。

关于node.js - 访问 Docker 容器内的 raspistill/pi 相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54842833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com