Daily Archives: 2023年1月5日

在docker中播放声音(ALSA)

在DockerFile中加入以下指令

#安装声音播放程序alsa-utils
RUN apt-get update
RUN apt-get install alsa-utils

docker启动时增加“–device /dev/snd”和“–privileged”参数

docker run -d -p 8080:8080 --restart=always --privileged --device /dev/snd --name raspi raspi:$CI_COMMIT_TAG

在树莓派上使用docker运行java程序并操作gpio

在树莓派64位的OS上是无法使用wiringpi的

官方编译的wiringpi在32位下编写的,因此在64位系统中运行会出现如下错误:

虽然有大神提供了自己编译的64位wiringpi,但是依然不行,资料如下:

https://github.com/guation/WiringPi-arm64

https://gitee.com/guation/WiringPi-arm64

修改DockerFile

一般docker运行java程序是会使用openjdk:8的镜像,但是树莓派虽然是64位硬件,但wiringpi只能运行在32位的OS中,因此若需要操作gpio则只能使用32位的OS。再加上openjdk:8并没有提供arm版本,因此需要指定成armv7版本的jdk镜像才能成功打包docker镜像:

#FROM openjdk:8

#指定armv7版本的java8
FROM balenalib/armv7hf-openjdk

在DockerFile中引入WiringPi

COPY ./wiringpi-2.61-1-armhf.deb /wiringpi-2.61-1-armhf.deb
RUN dpkg -i /wiringpi-2.61-1-armhf.deb