pgr*_*ues 5 node.js raspberry-pi docker dockerfile
我一直在使用 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]
我得到:
错误:生成 /opt/vc/bin/raspistill ENOENT
经过一番研究,我还尝试运行:
docker run --privileged -v=/opt/vc/bin:/opt/vc/bin --device=/dev/vchiq -p 3000:3000 [my/image:latest]
使用该命令,我得到:
标准错误:/opt/vc/bin/raspistill:加载共享库时出错:libmmal_core.so:无法打开共享对象文件:没有这样的文件或目录
有人可以分享一些关于我必须对 Dockerfile 进行哪些更改以便我能够从 Docker 容器内部访问 pi 相机的想法吗?提前致谢。
小智 1
我在尝试使用 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个要点:
/opt/vc/bin到您的 PATH 中,以便您可以raspistill在不引用完整路径的情况下进行调用。/opt/vc/lib到您的配置文件,以便raspistill可以找到它需要的所有依赖项。ldconfig在容器运行时而不是构建时重新加载配置文件 ( )。最后一点是安东的解决方案不起作用的主要原因。ldconfig需要在正在运行的容器中执行,因此要么使用与我类似的方法,要么使用entrypoint.sh文件。
| 归档时间: | 
 | 
| 查看次数: | 2119 次 | 
| 最近记录: |