【发布时间】:2022-01-03 19:08:04
【问题描述】:
我在 Raspberry Pi 3 (arm32v7) 上有一个 Python3 应用程序。该应用程序使用 picamera 定期拍摄照片,使用 Pillow 的图像分析检测运动,使用 Tensorflow 的深度学习检测对象,并将带有 base64 编码的带注释图像作为 JSON 有效负载发送到 MQTT 代理以进行进一步处理和显示带有 Node-RED 的画廊。
我已使用 Docker 将应用程序容器化,以安装在一组旧 Pi 上。我能够构建一个包含必要 Python 包的映像,然后使用 docker run 命令创建一个容器来启动应用程序。这可以按预期工作,但是该命令是很长的一行文本。为了简化,我创建了一个 docker-compose YML。我能够创建一个容器并启动应用程序,但它无法正常运行。
这里是 docker run 命令,带有 env。变量、共享卷和共享设备:
docker run --name nonamenow --rm --env USERID=admin --env PASSWD='wrongp@$$wordtryagain' --env MQTTIP='192.168.1.219' --env DELTA=60 --privileged=true -v /opt/vc:/opt/vc --env LD_LIBRARY_PATH=/opt/vc/lib --device /dev/vchiq -it sentry2:envenabled
以这种方式创建容器可以正常工作,并且图像开始流入图库。现在,这是我与docker-compose up 一起使用的 docker-compose YAML。
version: '3.6'
services:
app:
build: .
container_name: sentrycam21
image: sentry2:envenabled
restart: always
privileged: true
environment:
- LD_LIBRARY_PATH=/opt/vc/lib
- USERID=admin
- PASSWD='wrongp@$$wordtryagain'
- MQTTIP='192.168.1.219'
- DELTA=90
- TOPIC=Surveillance/MainDoor
volumes:
- /opt/vc:/opt/vc
devices:
- "/dev/vchiq:/dev/vchiq"
当程序尝试连接到 MQTT 代理时,这会在运行时失败。请注意,使用相同参数的其他方法正确建立了连接。我尝试删除 IP 地址周围的引号,但它只是挂起,没有任何进一步的反应。
如果您在我的 docker-compose YAML 中发现任何明显错误,请告诉我。感谢您的帮助。
【问题讨论】:
标签: python-3.x docker docker-compose raspberry-pi3